在DB2環境,如遇TABLE JOIN大批資料的情況,為加強效能請改用dbload,可想像成MS-SQL的BCP IN
即讀檔寫入TABLE
UNICA的DBLOAD流程如下:
- DROP TABLE UAC_11013_9
- CREATE TABLE UAC_11013_9 (MASK_ID VARCHAR(512))
- Temp File Create: E:\IBM\IMS\Campaign\partitions\partition1\tmp\d4e4aaac.t~#
- E:\IBM\IMS\Campaign\bin\RunDB2Loader.bat E:\IBM\IMS\Campaign\partitions\partition1\tmp\d4e4aaac.t~# UAC_11013_9
dbload -host 10.11.36.39 -port 50000 -u xxx -pw ooo -db BLUDB -schema UNICAUSR -df %1.load -t %2 -delim "," -ignoreZero true -lf "E:\IBM\IMS\Campaign\partitions\partition1\logs\loader_%2.msg" -bf "E:\IBM\IMS\Campaign\partitions\partition1\logs\loader_%2.bad.msg" - Temp File Delete: E:\IBM\IMS\Campaign\partitions\partition1\tmp\d4e4aaac.t~#
- DROP TABLE UAC_11013_9
dbload 參數:
- -host => DB2 SERVER IP
- -port => PORT
- -u => 登入帳號
- -pw => 登入密碼
- -db => 資料庫
- -schema => OWNER
- -df => 備份過程中產生的資料檔
- -t => 要讀取的TABLE名
- -delim => 分隔符號
- -ignoreZero => 讀檔移除空白
- -lf => LOG檔存放PATH
- -bf => BAD LOG檔存放PATH
注意事項:
- DB2 TABLE、欄位不能取中文名,但在UNICA的catlog設定是英文_中文的
- 應為unicausr(在asm_admin的帳號設定),才不會有dbload寫錯DB讀不到的情況
- tmp file會被刪除,所以另COPY file成xxx.loader,保留原始資料內容
- tmp file每一筆欄位長度為varchar(50) FOR IPNID的定義
UNICA會將長度*3為150,若遇到資料轉換,EX:卡號轉ID,則會出現長度過長的問題,故於讀檔時有加寫TRUNCATE邏輯 - 讀檔需移除空白(-ignoreZero)
- 日期格式設定(YYYY-MM-DD-MI.HH.SS)