db2库表导出及表数据导出导入del与ixf格式

db2导出当前库所有表结构
db2look -d <db2schame> -e -o all.sql

db2导出指定表signinfo结构

db2look -d <db2schame> -e -x -t signinfo -o signinfo.sql

导出库所有表数据

db2move <db2schame> export

导入库所有表数据

db2move <db2schame> import -io replace

 

生产上会由于权限问题,无法使用效率更高度load方式,只能使用import方式
 
一般导入导出:
db2 "export to /home/xxxx.del of del select * from tablename"
db2 "import from /home/xxxx.del of del insert into tablename"
 
db2 "export to /home/xxxx.IXF of IXF select * from tablename"
db2 "import from /home/xxxx.IXF of IXF insert into tablename"

 

del与ixf区别

del格式是一个文本文件,文件按行来存储,含有回车的文本内容在del文件中会另起一行,del文件可视。
ixf格式保存的是结构和数据,是一个二进制文件,ixf文件不可视。
 
 千万级的数据,import耗时约50分钟,但加上compound=100 ,效率提高约十倍
  • 使用 compound 选项,如在 MODIFIED BY 语句后使用 compound=n,以便将插入语句中的 n 行记录作为一组一起导入。
  • 对比逐行记录插入的方式,compound方式会在每n条记录而不是每条记录插入后等待返回的SQL执行结果,这种方式减少了网络的通信量。
  • compound的范围为 1 - 100。
db2 "import from /home/xxxx.IXF of ixf modified by compound=100 insert into tablename"

 

commitcount,在导入的过程中你可以100条或1000条左右数据就自动提交一次,看数据量大小。一般控制在3万条以下提交一次适宜

db2 "import from /home/xxxx.IXF of ixf modified by compound=100 commitcount 10000 insert into tablename"
  •  实操,86000条数据,不用 compound=100 commitcount 10000,执行完成花费10秒,用了后,为4秒。


import在日志空间不足的情况下一般使用load

db2 "load from User.del of del insert into user"<不推荐写法,推荐写法见下>

 

但是load在违反唯一性约束大量插入重复数据的情况可能造成Pending整张表无法使用,terminate直接解决问题;写法如下:

db2 "load from USER.del of del terminate into user"<推荐写法>

 

大表数据清空用delete会产生大量的日志效率很低,考虑用load...replace

db2 "load from USER.del of del replace into user"

 

 

posted @ 2020-12-24 23:43  tomato_4  阅读(3532)  评论(0编辑  收藏  举报