DB2数据库的导出与导入(Windows客户端)

来源:未知 责任编辑:责任编辑 发表时间:2013-08-27 11:16 点击:

第一步:导出服务器上DB2的表结构(使用命令行,如已编目,可跳过3,4)
1.运行cmd
2.输入db2cmd
3.创建节点
db2 catalog tcpip node mynode remote 192.168.1.90 server 50000
4.创建远程数据库实例
db2 catalog db dbname as mydb  at node mynode
5.连接数据库  www.2cto.com  
db2 CONNECT TO mydb user username using pssword
6.导出表结构
db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql 
导出过程截图如下:
 

 
导出的文件是D:\out.sql
 
第二步:在待导入的DB2数据库中执行DDL,创建表结构
用TOAD等客户端连接待导入的DB2数据库,复制D:\out.sql中的所有SQL到TOAD中,执行
(如2个数据库中的用户名不同,需手动替换out.sql中的用户名)
 
第三步:准备批量导出导入的SQL脚本
语法如下:
export to [path(例:D:"TABLE1.ixf)] of ixf select [字段(例: * or col1,col2,col3)] from TABLE1;
 
我没找到支持批量导出的客户端,所以自己写一个java类,用循环生成导出导入所有表数据的SQL
代码如下(运行时需引入db2jcc.jar):
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.*;
  www.2cto.com  
public class ExportDB2 {
 
    /** *//**
     * @param args
     */
    public static void main(String[] args) {
 
        String driver = "com.ibm.db2.jcc.DB2Driver" ;
        String url = "jdbc:db2://ip:50000/dbname" ;
        String userName = "user1" ;
        String passWord = "psw1" ;
       
        Connection conn = null ;
        Statement st = null ;
        ResultSet rs = null ;
        String sql = null ;
        try {
            Class. forName(driver).newInstance();
            conn = DriverManager. getConnection(url, userName, passWord);
            st = conn.createStatement();
            sql = new String("SELECT name FROM sysibm.systables where creator = 'user1' order by name");
            rs = st.executeQuery(sql);
            String table = null ;
            String exportCMD = null ;
            String importCMD = null ;
         // 文件路径
            File   file= new    File( "d:\\exportCMD.txt " );
            File   file2 = new File("d:\\importCMD.txt" );
            BufferedWriter   out= new    BufferedWriter(
                    new    FileWriter(file, true));
            BufferedWriter   out2= new    BufferedWriter(
                    new    FileWriter(file2, true));
            while (rs.next()){  www.2cto.com  
                  table = rs.getString(1);
                  exportCMD = "export to D:\\db2-bak\\ixf\\" + table +".ixf of ixf select * from " +table+ ";";
                out.write(exportCMD);
                out.newLine();
                importCMD = "import from D:\\db2-bak\\ixf\\" + table +".ixf of ixf into " +table+ ";";
                out2.write(importCMD);
                out2.newLine();
            }
            out.close();
            out= null ;
            file= null ;
            out2.close();
            out2= null ;
            file2= null ;
            conn.close();
            System. out .println("Finished!" );
        } catch (Exception e){
            System. out .println("error:" + e.getMessage() );
            System. out .println(e.toString());
        }
    }
}
  www.2cto.com  
运行后,在D盘生成这两个文件,一个是导出所有表中数据的SQL,一个是导入所有表中数据的SQL
 
 
第四步:批量导出表中数据
用TOAD等客户端连接服务器上的DB2数据库,复制D:\exportCMD.txt中的所有SQL到TOAD中,执行
导出的全部ixf文件,存在于D:\bd2-bak\ixf\
 
第五步:批量导入表中数据
用TOAD等客户端连接待导入的DB2数据库,复制D:\importCMD.txt中的所有SQL到TOAD中,执行
 
大功告成。
 
 
 
摘自 雷明庆的专栏
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • db2管理工具小结
    • DB2数据库的导出与导入(Windows客户端)
    • db2 CLP中如何换行
    • DB2查看表结构及所用表语句
    • DB2 · CREATE TABLESPACE
    • 使用DB2对象:创建模式、表和视图
    • DB2数据库逻辑卷的复制
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1