IBM 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
*/
* 创建导出脚本
* @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

时间: 2024-10-01 14:06:22

IBM DB2的数据复制、迁移方法的相关文章

迁移到位于Intel Xeon处理器之上的IBM DB2

迁移到新的数据库平台或硬件架构似乎有些令人畏缩.而组织可能必须通过更改来实现关键业务目标.举例来说,从 Oracle Database 迁移到 IBM® DB2® 有助于削减成本.降低复杂性.将数据库从 Sun SPARC http://www.aliyun.com/zixun/aggregation/13748.html">基础架构迁移到基于 Intel® Xeon® 处理器的 IBM System x® 服务器能够提高数据库性能.整合率.可伸缩性和可用性. 无论最初的目标如何,迁移到基

FreeBSD系统的数据迁移方法

相信一些朋友也曾经想过如何快捷安全迁移数据,迁移数据可能有多种原因,一种是想增加一块硬盘,把原来一些空间不够的分区迁移过来:另一种是硬盘复制,旧的硬盘容量可能太小了,又或者已经出现了问题,想用新的硬盘代替.葱头就分别举例说明怎样迁移数据,具体方法可能和你的硬盘的实际情况有所不同,这里只是作一个指引. 无论是那种方法,都必须先将新硬盘装上并让系统正确识别.为了不用设硬盘跳线(硬盘缺省为Master),这里举例安装一个新的IDE硬盘到IDE1接口,即与旧硬盘使用不同的数据线,系统识别为ad2:如果你

使用InfoSphere CDC for DB2 for i实现DB2 for i之间的实时数据复制

本文从实际应用的角度,阐述如何使用 InfoSphere CDC for DB2 for i 实现 DB2 for i 之间的实时数据复制.与此同时,还深入分析了 InfoSphere CDC for DB2 for i 的体系结构与工作原理. IBM i 平台的特色之一是集成数据库 DB2 for i.IBM InfoSphere Change Data Capture( 简称 InfoSphere CDC) 作为一款跨数据库复制解决方案,支持不同 DB2 for i 之间,甚至是异构数据库之

插入操作-DB2 中如何将表中数据复制一份,改变表中一个联合主键的值,

问题描述 DB2 中如何将表中数据复制一份,改变表中一个联合主键的值, 如下: 表A有3个字段是联合主键(非自增长) create table A ( a VARCHAR(20) not null, b VARCHAR(100) not null, c VARCHAR(10) not null, constraint P_Key_1 primary key (a, b, c) ); 表中数据: a b c 1 2 0 1 3 0 如何将表中数据复制一份,改变表中一个联合主键的值,将字段"c&qu

MySQL快速复制数据库数据表的方法_Mysql

某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库.使用以下方法,可以非常简单地实现. 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb.步骤如下: 1. 首先创建新的数据库newdb #mysql -u root -ppassword mysql>CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; 2. 使用mysqldump及mysql的

边缘云计算体系结构及数据迁移方法研究

边缘云计算体系结构及数据迁移方法研究 西安电子科技大学  曹小坤 本文改进了现有的云计算体系结构并研究其数据迁移方法.针对分布式云计算中子系统相互独立,服务资源分散等现状,在深入分析了现有集中式和分布式体系结构的基础上,结合分层次管理的思想,本文提出了由"边缘云"与"核心云"组成的边缘云计算体系结构,给出了"核心云"和"边缘云"定义和功能.通过核心云对各边缘云的监控和管理,减少了边缘云的网络负载,解决了分布式云计算体系结构中服

基于层次化调度策略和动态数据复制的网格调度方法

基于层次化调度策略和动态数据复制的网格调度方法 赖锦辉  梁松 针对在网格中如何有效地进行任务调度和数据复制,以便减少任务执行时间等问题,提出了任务调度算法(YPP)和优化动态数据复制算法(e1/ZF),并构建一个方案将两种算法进行了有效结合. 该方案采用 YPP算法综合考虑任务等待队列的数量.任务需求数据的位置和站点的计算容量,采用网络结构分级调度的方式,配以适当的权重系数计算综合任务成本,搜索出最佳计算节点区域;采用 e1/ZF算法分析数据传输时间.存储访问延迟.等待在存储队列中的副本请求和

创建一个空的IBM DB2 ECO数据库的方法_DB2

问:怎样才能创建一个空的 IBM DB2 ECO数据库?   答:一般情况下你需要一个空数据库作为存储 EcoSpace 的容器.Delphi 2005 提供了一张光盘,其中包括 IBM DB2 UDB 开发人员版.您可以使用 Control Center(可在 IBM DB2 General Administrator Tool 中找到).在 Control Center 中,可以使用树型视图来查看系统.DB2 实例和数据库.使用向导创建一个新的数据库,这将为您提供一个分为 7 步的向导,在那

使用IBM DB2 pureScale Feature与Q Replication实现可伸缩性和业务连续性

要沉着应对如今愈加全球化和竞争激烈的市场,离不开这样一种http://www.aliyun.com/zixun/aggregation/14345.html">数据处理架构,该架构能够随未来的战略需求增长而灵活地增长,能在发生组件故障.维护活动和灾难事件时确保业务连续性. 对某些企业而言,哪怕一小时的停工都可能导致数百万美元的收入损失,更别说对公司声誉的损害和潜在的客户流失.全球化的企业跨不同时区而运作,无时无刻不在提供业务服务.为系统维护和升级保留的离线时窗已不复存在.分布式的企业需要能