环境准备
1.新建表
qinys@Linux:~> db2 "create table tb1(id int,dt timestamp,name varchar(100))";
DB20000I The SQL command completed successfully.2.插入数据
qinys@Linux:~> db2 "insert into tb1 values(1,current timestamp,'Jack')";
DB20000I The SQL command completed successfully. qinys@Linux:~> db2 "insert into tb1 values(2,current timestamp,'Numy')"; DB20000I The SQL command completed successfully.3.创建新表(为Import贮备)
qinys@Linux:~> db2 "create table tb1_tmp like tb1";
DB20000I The SQL command completed successfully.DB2中的数据导入导出分别为:Import与Export
DEL:界定的ASCII文件,行分隔符与列分隔符将数据分开
ASC:定长的ASCII文件,行按照行分隔符分开,列定长
PC/IXF:只能用在DB2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用的长度,文件中包括表的定义和表的数据
WSF:工作表方式导入导出,这种格式的文件类型用的比较少
DB2中对不同的数据导入导出方式,支持不同的文件类型:
文件类型 Import Export Load 定界 支持 支持 支持 非定界 支持 不支持 支持 ixf 支持 支持 支持wsf工表表
支持 支持 不支持关于3种导入导出操作进行简单的介绍:
export:导出数据,支持IXF,DEL或WSFimport:导入数据,可以向表中导入数据,支持上面提到的4种文件类型。 load:导入数据,功能和import基本相同。支持以上说的几种文件类型。Export与Import注意事项
<1>不同字符集、字段含有TIMESTAMP格式
导出
qinys@Linux:~> db2 "export to Exp.dat of del MODIFIED BY CODEPAGE=1386 TIMESTAMPFORMAT=\"yyyy-mm-dd hh:mm:ss tt\" SELECT * FROM tb1"3104N The Export utility beginning export data "Exp.dat".3105N The Export utility has finished exporting "2" .Number exported: 2
CODEPAGE=1386 是指在数据导出时,做一个数据库代码页的转换
1208→GBK
1386→UTF-8
导入
qinys@Linux:~> db2 "import from Exp.dat of del MODIFIED BY CODEPAGE=1386 TIMESTAMPFORMAT=\"yyyy-mm-dd hh:mm:ss tt\" INSERT INTO tb1_tmp";3109N The utility beginning data "Exp.dat".3110N The utility has completed processing. "2" were the .3221W ... . Record = "2".3222W ... changes was successful.3149N "2" were processed the . "2" weresuccessfully inserted the . "0" were rejected.Number = 2Number skipped = 0Number inserted = 2Number updated = 0Number rejected = 0Number = 2
Import导入大量数
db2 import from 数据文件名 of ixf modified by compound=100 insert into 表名
上面的命令中IMPORT会在每100条记录而不是每条记录插入后等待返回的SQL执行结果。
设置commitcount 参数加快导入
db2 import from 数据文件名 of ixf modified by compound=100 commitcount 10000 insert into 表名