db2数据复制、迁移方法

原创 2006年06月12日 17:39:00
db2数据复制、迁移方法

以下方法经测试,在环境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空间中,数据的load速度在60-100万条/min左右。
背景:需要更改数据库表空间,或者需要将数据库中所有表的数据迁移到一个新的数据库中。
步骤:
1.通过db2控制台(db2cc)选中源数据库中的所有表,将其导出成DDL脚本;
2.根据需要对脚本进行必要的修改,譬如更改表空间为GATHER;
3.新建数据库,新建DMS表空间:GATHER;
4.将DDL脚本在此数据库中执行;
5.编写代码查询源数据库中的所有表,自动生成export脚本;
6.编写代码查询源数据库中的所有表,自动生成import脚本;
7.连接源数据库执行export脚本;
8.连接目标数据库执行import脚本;

附录1:生成export脚本代码示例:
/**
 * 创建导出脚本
 * @param conn
 * @param creator 表创建者
 * @param filePath
 */
public void createExportFile(Connection conn,String creator,String filePath) throws Exception {
    DBBase dbBase = new DBBase(conn);
    String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
    try {
        dbBase.executeQuery(selectTableSql);
    } catch (Exception ex) {
        throw ex;
    } finally {
        dbBase.close();
    }
    DBResult result = dbBase.getSelectDBResult();
    List list = new ArrayList();
    while (result.next()) {
        String table = result.getString(1);
            list.add(table);
    }
    StringBuffer sb = new StringBuffer();
    String enterFlag = "/r/n";
    for (int i = 0; i < list.size();i++) {
        String tableName = (String)list.get(i);
        sb.append("db2 /"export to aa" + String.valueOf(i+1)+ ".ixf of ixf select * from " + tableName + "/"");
        sb.append(enterFlag);
    }
    String str = sb.toString();
    FileUtility.saveStringToFile(filePath, str, false);
}

附录2:生成import脚本代码示例:
/**
 * 创建装载脚本
 * @param conn
 * @param creator 表创建者
 * @param filePath
 */
public void createLoadFile(Connection conn,String creator,String filePath) throws Exception {
    DBBase dbBase = new DBBase(conn);
    String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
    try {
        dbBase.executeQuery(selectTableSql);
    } catch (Exception ex) {
        throw ex;
    } finally {
        dbBase.close();
    }
    DBResult result = dbBase.getSelectDBResult();
    List list = new ArrayList();
    while (result.next()) {
        String table = result.getString(1);
            list.add(table);
    }
    StringBuffer sb = new StringBuffer();
    String enterFlag = "/r/n";
    for (int i = 0; i < list.size();i++) {
        String tableName = (String)list.get(i);
        sb.append("db2 /"load from aa" + String.valueOf(i+1)+ ".ixf of ixf into " + tableName + "  COPY NO  without prompting /"");
        sb.append(enterFlag);
    }
    String str = sb.toString();
    FileUtility.saveStringToFile(filePath, str, false);
}

附录3:export脚本示例
db2 connect to testdb user test password test
db2 "export to aa1.ixf of ixf select * from table1"
db2 "export to aa2.ixf of ixf select * from table2"
db2 connect reset

附录4:import脚本示例
db2 connect to testdb user test password test
db2 "load from aa1.ixf of ixf  replace into table1  COPY NO  without prompting "
db2 "load from aa2.ixf of ixf  replace into table2  COPY NO  without prompting "
db2 connect reset

跨平台的DB2数据库的迁移

跨平台的DB2数据库的迁移 假设我们有一个IBM DB2数据库,这个数据库里有很多表(可能上百张甚至更多),又有很多索引、外键约束、触发器。最要命的是还有一些含有自增字段的表(含有GENERAT...
  • gold_star
  • gold_star
  • 2016年05月24日 15:43
  • 1310

db2 数据迁移

1.导入(import)导出(export)以及导入(load)的介绍 DB2中所谓的数据移动,包括: 1. 数据的导入(Import) 2. 数据的导出(Export) 3. 数据的装入(L...
  • liyanping521
  • liyanping521
  • 2013年11月06日 15:51
  • 1072

DB2数据库重建及表数据迁移探讨研究

虽然全备份恢复或者恢复前滚等数据库迁移较为常用并且也较为简单,但是这类携带已经配置好的数据库管理器一起迁移数据库在很多时候并不适用,例如windows上的数据库管理器肯定无法迁移到Unix上,再如数据...
  • madmanvswarrior
  • madmanvswarrior
  • 2015年12月20日 16:51
  • 758

mysql数据库迁移到db2数据库

最近客户要求把mysql数据库改为用db2数据库,真是醉了,市面上各类数据库,语法不一样,函数不一样,工具也不一样,增加了程序员的负担。我用过Oracle、mysql、db2数据库,感觉db2是最难用...
  • xiaoyu714543065
  • xiaoyu714543065
  • 2016年09月23日 09:34
  • 2198

db2 数据库的常用命令

1.改变列的长度    db2 "alter table [tablename] alter column [columnname] set data type varchar(length)" ...
  • yht_817
  • yht_817
  • 2017年01月18日 18:58
  • 937

多种数据库主从复制 工具golden gate

GoldenGate简介  Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而...
  • zhousenshan
  • zhousenshan
  • 2016年08月01日 14:08
  • 1292

基于游标和LOAD技术的DB2数据库高效数据迁移方法

在DB2数据库中,游标cursor和LOAD技术相结合是进行数据迁移的有效解决方法,它的优点是迁移速度快,耗用时间短,当迁移海量数据时该优点尤其显著,而且被迁移的数据无需从源库导出保存到服务器文件系统...
  • qq_35653412
  • qq_35653412
  • 2017年04月01日 15:29
  • 447

db2 迁移 oracle的一次经历

最近朋友给了个活,将系统的db2转成Oracle,不大也不小,但之前没做过。。 具体情况是,表有900多张,存储过程70多,视图130多,函数和其他若干。。。。。。。。至于需要一直的数据量,我只知道要...
  • Java_gjyw
  • Java_gjyw
  • 2017年03月30日 11:38
  • 1243

DB2搭建SQL复制环境

摘要: 本文在同一个数据下,搭建了一个SQL复制的环境,并做了相关的测试~ [背景知识] 在搭建环境之前,您需要了解SQL复制中基本的概念,比如capture, apply, control tab...
  • qingsong3333
  • qingsong3333
  • 2015年12月06日 14:37
  • 1227

DB2 数据库在线备份和恢复的操作步骤

1、数据库在线备份操作命令如下: DB2 backup db 数据库名 online to 备份路径 例如:db2 backup db tony online to /home/...
  • tony7706
  • tony7706
  • 2017年04月16日 22:53
  • 1546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:db2数据复制、迁移方法
举报原因:
原因补充:

(最多只允许输入30个字)