DB2 导出导入 SCHEMAS
此方法通过 db2look 导 schemas 的结构,通过 db2move 导数据。
但是此方法会出现一定的问题,在导入的时候,如果出现问题,需要根据实际情况进行手动干预处理。
-
创建文件夹用于存储导出的数据和结构
mkdir -m 777 export cd export
-
通过 db2move export 导出指定模式的数据
db2move SAMPLE export -sn db2inst1 -u db2inst1 -p db2inst1
-
通过 db2look 导出 DDL
db2look -d SAMPLE -e -u db2inst1 -z db2inst1 -l -o db2look.sql
参数说明:
- -e 提取数据库对象的 DDL 语句,例如表、视图、自动摘要表、索引、触发器、序列、主键、引用、检查约束、用户定义函数和过程。
- -a 提取用户创建的所有对象的 DDL 语句。如果这个选项与 -e 选项一起指定,那么就要对数据库中的所有对象进行处理。
- -z schema-name 将输出限制在一个或多个(最多 30 个)指定的表中。名必须使用空格字符分隔开。跟
-a
连用的时候无效。 - -m 生成需要的 UPDATE 语句,对表、列和索引的统计信息进行复制。
- -l 为用户定义的表空间、数据库分区组和缓冲池生成 DDL 语句。
- -td delimiter 指定 db2look 工具使用的分隔符
;
默认为分号;
- -o file-name 将输出结果写入文件。如果没有指定该选项,就将输出结果写入标准输出设备。
- -u user-name 将输出限制在一个或者多个用户指定的表中。名必须使用空格字符分隔开。跟
-a
连用的时候无效。
-
编辑生成的 SQL 文
将
CONNECT TO
指向需要导入的库。 -
执行 SQL
db2 -tvf db2look.sql > db2look.log
这期间注意保存 Log,将出现的问题手动进行处理。
-
在问题都处理完之后,将数据导入
db2move BONC load
-
一些测试时的小记
- 测试的时候使用的是 SAMPLE 库,pagesize 是 8192,在创建新的 database 的时候,需要制定 pagesize,例如
db2 create database bonc pagesize 8192
-
为了测试方便,使用 docker 搭建数据库进行测试
docker run -d --name db2 -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1 -e LICENSE=accept ibmcom/db2express-c:latest db2start docker exec -it db2 /bin/bash
- 测试的时候使用的是 SAMPLE 库,pagesize 是 8192,在创建新的 database 的时候,需要制定 pagesize,例如