我一直在寻找将整个数据库数据(db2)导出到 csv 的命令。
我用谷歌搜索了它,但它提出了 db2 export 命令,它只能逐表导出。
例如
export to employee.csv of del select * from employee
因此我必须为所有桌子做这件事,这可能很烦人。有没有办法可以将 db2 中的整个数据库导出到 csv?(或我可以与其他数据库一起使用的其他格式)
谢谢
您可以读取 SYSIBM.SYSTABLES 表以获取所有表的名称,并为每个表生成一个导出命令。
将导出命令写入 SQL 文件。
读取 SQL 文件,并执行导出命令。
编辑添加:警告 - 您的某些外键可能不同步,因为在您阅读各种表时可以更改数据库。
# 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