2012-09-13 126 views
1

我一直在尋找命令將整個數據庫數據(db2)導出到csv。將整個數據庫數據(db2)導出到csv文件

我做了谷歌它,但它想出了db2出口命令,只有按表導出表。

例如

export to employee.csv of del select * from employee 

因此,我必須這樣做,所有的表,它可以很煩人。有沒有辦法將db2中的整個數據庫導出到csv? (或者說我可以與其他數據庫使用其他格式)

謝謝

回答

2

,你可以讀取SYSIBM.SYSTABLES表獲得所有表的名稱,併爲每個表導出命令。

將導出命令寫入SQL文件。

讀取SQL文件,並執行導出命令。

修改爲添加:警告 - 您的某些外鍵可能無法同步,因爲在您閱讀各種表格時可能會更改數據庫。

+0

我曾想過這件事,但我希望開箱即用,而不是去創造屬於自己的東西,即使是在bash中,我也可以做到。 另外我想根據它們屬於的模式來過濾它,數據庫X具有模式Y和Z,我只需要Y的表格 – 7dr3am7

+1

您必須決定您對哪些DB2模式感興趣,並且必須創建* .csv文件名。你可以自己做。您可以在SYSIBM.SYSTABLES SELECT的WHERE子句中包含您感興趣的模式。 –

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 [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