DB2批量匯入匯出
阿新 • • 發佈:2019-02-01
一、匯出
1. 先建一個空的資料夾,比如data
2. 定位到data目錄
3. 匯出建表語句:db2look -d 庫名 -e -z 使用者名稱 -l -o 檔名.sql
4. 匯出資料:db2move 庫名 export
4.1、命令執行成功後,在data資料夾中的檔案列表如下:
4.2、內容解釋: 4.2.1、db2move.lst:用於批量匯入,檔案記錄了.ixf檔案和對應的表名(只記錄匯出時沒有發生錯誤和警告的表) 4.2.2、EXPORT.out:相當於匯出日誌,記錄了.ixf檔案和對應的表名(對映關係只記錄了發生錯誤和警告的表,沒報錯的表這裡不記錄對映關係) 4.2.3、hrms.sql:這個是建表語句,即【檔名.sql】 4.2.4、tab*.ixf:資料檔案,一個表對應一個.ixf檔案 4.2.5、tab*.msg:操作日誌,記錄了對應表的操作 4.3、注意: 4.3.1、如果資料庫字符集和本地字符集不匹配,db2move.lst表中只有一部分記錄,而沒有記錄的表將無法匯入到新庫中 4.3.1.1、某個資料庫的字符集codeset只能在建立資料庫的時候指定,之後不可修改 4.3.1.2、模式(使用者名稱)的字符集可以修改 4.3.1.2.1、檢視:db2 get db cfg(可檢視內碼表的字符集,如UTF-8是1208,GBK是1386) 4.3.1.2.2、修改:db2set db2codepage=1386 4.3.1.2.3、重啟:db2stop force(重啟才能生效)
二、匯入
1. 新建資料庫:db2 create database 資料庫名 using codeset GBK territory CN 2. 連線資料庫:db2 connect to 資料庫名 3. 執行建表SQL指令碼:db2 -svtf 檔名.sql(執行之前,需要把檔案中的使用者名稱改為本地資料庫的使用者名稱,如果一樣則不用修改) 4. 匯入資料: 4.1、定位到data目錄 4.2、db2move 資料庫名 load 5. 注意 5.1、db2move.lst檔案中缺少資料表 5.1.1、檔案中資料表和.ixf檔案對映格式:【!"使用者名稱"."表名"!tab序號.ixf!tab序號.msg!】 5.1.2、根據EXPORT.out檔案,得到資料表和.ixf檔案的對映關係【表名 tab序號】,這個需要手動處理一下 5.1.3、通過Excel或其他方式,按照固定格式構建所有的對映關係,複製貼上到db2move.lst檔案中 5.2、匯入成功後,某個表無法操作,執行命令【reorg table 表名】也報錯 5.2.1、刪除這個表 5.2.2、重新建立並匯入資料 5.2.2.1、從SQL指令碼【檔名.sql】中找到該表的建表語句,可以單獨放到一個檔案中執行,也可以複製到客戶端工具中直接執行 5.2.2.2、匯入表資料 5.2.2.2.1、在EXPORT.out檔案中根據表名和.ixf檔案對映關係,找到對應的.ixf檔案 5.2.2.2.2、單表匯入:db2 import from tab序號.ixf of ixf insert into 表名 5.2.2.3、可能匯入失敗,報錯:資料庫事務日誌已滿 5.2.2.3.1、原因:單個表資料量過大,如達到1.5G 5.2.2.3.2、解決辦法:調整日誌檔案大小和數量 5.2.2.3.2.1、db2 update db cfg for 資料庫名 using LOGFILSIZ 65536(這是修改日誌檔案大小) 5.2.2.3.2.2、db2 update db cfg for 資料庫名 using LOGPRIMARY 12(這是修改主日誌檔案數量) 5.2.2.3.2.3、db2 update db cfg for 資料庫名 using LOGSECOND 13(這是修改輔日誌檔案數量) 5.2.2.3.2.4、db2stop force(重啟才能生效) 5.2.2.3.2.5、連線資料庫後再次執行匯入單表命令即可