10

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

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

那么我怎样才能完成我的事情呢?

jrh

4

5 回答 5

10

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

因此,例如导出数据:

db2move [your_db_name] EXPORT -sn [your_schema_name]

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

如果 db2move 不是您所需要的,您可以查看DB2 中可用的数据移动选项表。

于 2009-05-29T15:41:18.393 回答
5

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

于 2009-05-29T12:25:35.743 回答
2

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

实际上,您可以根据元数据生成语句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 提供了一个工具,尽管我可能是错的。)

于 2009-05-29T12:38:56.873 回答
1

具有所有 DDL 备份的 Db2 模式:

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

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

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

于 2017-12-14T05:43:08.707 回答
0

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

db2 -x "SELECT 'load 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' ORDER BY TABNAME" > /tmp/db2cfeimport.sql

于 2016-06-10T21:04:38.223 回答