来自DB2的SQL转储

时间:2009-05-29 11:19:09

标签: sql db2 dump

我正在尝试将一个IBM DB2 UDB服务器中的特定模式的内容转储到sql文本文件中(很像mysql的mysqldump功能)。

我遇到了db2look,但它只转储了架构的结构(只有ddl,没有dml)。

那我怎么能完成我的事呢?

JRH。

5 个答案:

答案 0 :(得分:10)

您正在寻找的是db2move命令。对于特定架构,您应该使用“sn”开关。

例如,导出数据:

db2move [your_db_name] EXPORT -sn [your_schema_name]

db2move有许多选项和开关可供选择,具体取决于您想要做什么。

如果db2move不完全符合您的需要,您可以查看Data Movement Options available in DB2的表格。

答案 1 :(得分:5)

您可以使用SQquirreL(一种用Java实现的SQL客户端)来实现此目的。在其“对象” - 树中,您将选择所有需要的表,并从上下文菜单中选择“脚本>创建数据脚本”。

答案 2 :(得分:2)

如果目标是将数据传输回另一个DB2数据库,则可以使用EXPORT和相关的IMPORTLOAD命令。

实际上,您可以根据SYSCAT.TABLES

中的元数据生成语句

导出

   SELECT 'EXPORT TO /usr/data/SCHEMA/' || TABNAME || '.ixf OF IXF LOBS TO /usr/data/SCHEMA/lbos/ MODIFIED BY LOBSINFILE SELECT * FROM SCHEMA.' || TABNAME || ';'
     FROM SYSCAT.TABLES
    WHERE TABSCHEMA = 'SCHEMA'
 ORDER BY TABNAME

导入

   SELECT 'IMPORT FROM /usr/data/SCHEMA/' || TABNAME || '.ixf OF IXF LOBS FROM /usr/data/SCHEMA/lobs/ MODIFIED BY LOBSINFILE INSERT INTO SCHEMA.' || TABNAME || ';'
     FROM SYSCAT.TABLES
    WHERE TABSCHEMA = 'SCHEMA'
 ORDER BY TABNAME

如果你想要实际的插入脚本,那么你可能需要使用第三方工具(我不知道DB2提供的工具,但我可能错了。)

答案 3 :(得分:1)

所有DDL备份的Db2架构:

我使用下面的命令,它为我导出所有DDL。

db2look -d CusDb -x -e -z CusSchema -o OutputFile

语法: db2look -d DbName -x -e -z SchemaName -o OutputFile_name

答案 4 :(得分:0)

对于输入,稍微调整以使用负载有助于避免行被拒绝。

db2 -x“SELECT”加载FROM / usr / data / SCHEMA /'|| TABNAME ||'.ixf OF IXF LOBS FROM / usr / data / SCHEMA / MODIFIED BY identityoverride INSERT INTO CFEXT。' || TABNAME ||';'FROM SYSCAT.TABLES WHERE TABSCHEMA ='CFEXT'ODER BY TABNAME“> /tmp/db2cfeimport.sql