我一直在寻找命令将整个数据库数据(db2)导出到csv。将整个数据库数据(db2)导出到csv文件
我做了谷歌它,但它想出了db2出口命令,只有按表导出表。
例如
export to employee.csv of del select * from employee
因此,我必须这样做,所有的表,它可以很烦人。有没有办法将db2中的整个数据库导出到csv? (或者说我可以与其他数据库使用其他格式)
谢谢
我一直在寻找命令将整个数据库数据(db2)导出到csv。将整个数据库数据(db2)导出到csv文件
我做了谷歌它,但它想出了db2出口命令,只有按表导出表。
例如
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 [email protected] "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
我曾想过这件事,但我希望开箱即用,而不是去创造属于自己的东西,即使是在bash中,我也可以做到。 另外我想根据它们属于的模式来过滤它,数据库X具有模式Y和Z,我只需要Y的表格 – 7dr3am7
您必须决定您对哪些DB2模式感兴趣,并且必须创建* .csv文件名。你可以自己做。您可以在SYSIBM.SYSTABLES SELECT的WHERE子句中包含您感兴趣的模式。 –