我想将一个 IBM DB2 UDB 服务器中特定 schema 的内容导出至 SQL 文本文件(类似于 mysql 的 mysqldump 功能)。
我找到了 db2look 工具,但它只能导出 schema 的结构(只有 ddl,没有 dml)。
那么我该如何实现呢?
jrh。
db2move [your_db_name] EXPORT -sn [your_schema_name]
根据您想要做什么,db2move有许多选项和开关可用。
如果db2move不完全符合您的需求,您可以查看DB2中可用的数据移动选项表格。
EXPORT
和相关的IMPORT
或LOAD
命令。SYSCAT.TABLES
中的元数据生成语句。
EXPORT
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
备份所有DDL的Db2模式:
我使用下面的命令,成功地导出了所有DDL。
db2look -d CusDb -x -e -z CusSchema -o OutputFile
对于导入,稍微调整使用load可以避免行被拒绝。
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