2

我一直在寻找将整个数据库数据(db2)导出到 csv 的命令。

我用谷歌搜索了它,但它提出了 db2 export 命令,它只能逐表导出。

例如

export to employee.csv of del select * from employee

因此我必须为所有桌子做这件事,这可能很烦人。有没有办法可以将 db2 中的整个数据库导出到 csv?(或我可以与其他数据库一起使用的其他格式)

谢谢

4

2 回答 2

2

您可以读取 SYSIBM.SYSTABLES 表以获取所有表的名称,并为每个表生成一个导出命令。

将导出命令写入 SQL 文件。

读取 SQL 文件,并执行导出命令。

编辑添加:警告 - 您的某些外键可能不同步,因为在您阅读各种表时可以更改数据库。

于 2012-09-13T14:06:10.127 回答
1
# loop trough all the db2 db tables in bash and export them
# all this is just another oneliner ... 
# note the filter by schema name ... 
db2 -x "select schemaname from syscat.schemata where 1=1 and schemaname like 'GOSALES%'" | { while read -r schema ; do db2 connect to GS_DB ; db2 -x "SELECT TABLE_NAME FROM SYSIBM.TABLES WHERE 1=1 AND TABLE_CATALOG='GS_DB' AND TABLE_SCHEMA = '$schema'" | { while read -r table ; do db2 connect to GS_DB; echo -e "start table: $table \n" ; db2 -td@ "EXPORT TO $schema.$table.csv of del modified by coldel; SELECT * FROM $schema.$table " ; echo -e " stop table: $table " ; done ; } ; done ; }


 wc -l *.csv | sort -nr
 4185939 total
 446023 GOSALES.ORDER_DETAILS.csv
 446023 GOSALESDW.SLS_SALES_ORDER_DIM.csv
于 2016-05-11T08:55:03.527 回答