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