DB2LOAD

  • 84
  • 0
  • 2022-01-07

在DB2環境,如遇TABLE JOIN大批資料的情況,為加強效能請改用dbload,可想像成MS-SQL的BCP IN

即讀檔寫入TABLE

UNICA的DBLOAD流程如下:

  1. DROP TABLE UAC_11013_9
  2. CREATE TABLE UAC_11013_9 (MASK_ID VARCHAR(512))
  3. Temp File Create: E:\IBM\IMS\Campaign\partitions\partition1\tmp\d4e4aaac.t~#
  4. 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"
  5. Temp File Delete:  E:\IBM\IMS\Campaign\partitions\partition1\tmp\d4e4aaac.t~#
  6. 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

注意事項:

  1. DB2 TABLE、欄位不能取中文名,但在UNICA的catlog設定是英文_中文的
  2. 應為unicausr(在asm_admin的帳號設定),才不會有dbload寫錯DB讀不到的情況
  3. tmp file會被刪除,所以另COPY file成xxx.loader,保留原始資料內容
  4. tmp file每一筆欄位長度為varchar(50) FOR IPNID的定義
    UNICA會將長度*3為150,若遇到資料轉換,EX:卡號轉ID,則會出現長度過長的問題,故於讀檔時有加寫TRUNCATE邏輯
  5. 讀檔需移除空白(-ignoreZero) 
  6. 日期格式設定(YYYY-MM-DD-MI.HH.SS)

參考: