Sybase中的load table的用法


Sybase中的load table的用法

用sybase iq作為數據倉庫的存儲,確實有其獨特的特點和優勢,但是在數據ETL的時候,如果用insert、update方式,速度太慢,大概是2秒鍾左右一條數據。好在iq提供了一條load語句來解決這個問題。

load語句的格式:
  LOAD [ INTO ] TABLE [ owner.]table-name [ ( column-name, . . . ) ]
  FROM filename
  [ load-option . . . ]
  [ statistics-limitation-options ]
  load-option :
  CHECK CONSTRAINTS { ON | OFF }
  | COMPUTES { ON | OFF }
  | DEFAULTS { ON | OFF }
  | DELIMITED BY string
  | ESCAPE CHARACTER character
  | ESCAPES { ON | OFF }
  | FORMAT { ASCII | BCP }
  | HEXADECIMAL {ON | OFF}
  | ORDER {ON | OFF}
  | PCTFREE percent-free-space
  | QUOTES { ON | OFF }
  | SKIP integer
  | STRIP { ON | OFF }
  | WITH CHECKPOINT { ON | OFF }


  • 如果字段名未出現在字段列表中,則填充NULL、0、空、或者DEFAULT;

  存在於輸入文件中的字段可以用“filler()”.忽略

  • DEFAULTS { ON | OFF } 為ON則字段取缺省值。否則取NULL

  • QUOTES { ON | OFF } 缺省為ON ,字段定界符為‘’或者 “”

  • DELIMITED BY 選項: 可以單個字符,最多255個字符,例如:制表符

  號作分割符號:

  ...DELIMITED BY ’nx09’

  • SKIP n 忽略前n條記錄;

  • STRIP ON|OFF 尾空格插入前是否截取;

  • WITH CHECKPOINT ON|OFF 缺省為 OFF, 如果設置為ON則,命令完成

  后,執行CHECKPOINT 操作。

下面是從一個文本文件load到表F_INN_IA_DAILY_SUM中的語句:

set temporary option date_order=YMD;
Load Table F_INN_IA_DAILY_SUM
(
ORG_SID '+|+', 
DEAL_SID '+|+', 
ALL_TIME_SID '+|+', 
R_COUNT_DIM_SID '+|+', 
T_TAX_STOR_COST '+|+', 
T_STOR_COST '+|+', 
T_STOR_SUM '+|+', 
CREATED_DT 'X0A'
)
From '/load_data/F_Inn_IA_Daily_Sum.txt'
ESCAPES OFF
QUOTES OFF
NOTIFY 100000
WITH CHECKPOINT ON;
COMMIT

其中+|+是字段的分隔符,X0A是記錄的分隔符,即回車(文本文件中)。

例一:

1,文本文件的內容格式為:

abc|defgh|aaaa|bbbbbb|ccccc|ddddd|eeee|fffF
abc|defgh|aaaa|bbbbbb|ccccc|ddddd|eeee|fffF 
abc|defgh|aaaa|bbbbbb|ccccc|ddddd|eeee|fffF

2,load table語句:

Load table  My_Table
(
ORG_SID                      '|', 
DEAL_SID                     '|', 
ALL_TIME_SID              '|', 
R_COUNT_DIM_SID      '|, 
T_TAX_STOR_COST    '|', 
T_STOR_COST            '|', 
T_STOR_SUM              '|', 
CREATED_DT              '\X0A'         --數據文件中每行的換行符(16進制)
)
From  '/load_data/loadTest.txt'       ---要加載文件的路徑
ESCAPES OFF
QUOTES OFF
NOTIFY 100000
WITH CHECKPOINT ON;
COMMIT;

文件以‘|’作為分隔符,每行的換行符以 '\X0A'換行; 通常的換行有'\x0d\x0a'(回車、換行)   或'\x0A' (換行);

load table  語法寫入存儲過程,然后直接調用存儲過程文件即可加載入庫;

例二:

1,文本格式為:

20171222|&@001731edae78|&@absent|&@absent|&@001731edae78|&@|
20171222|&@001bb958bc07|&@absent|&@absent|&@001bb958bc07|&@|
20171222|&@001bfc067636|&@absent|&@absent|&@001bfc067636|&@|

2,load table 語句:

set temporary option CONVERSION_ERROR = 'OFF'; 
load table t_station_match_result(load_dt '|&@' null('\\xd0'),op_station '|&@' null('\\xd0'),ip '|&@' null('\\xd0'),mac '|&@' null('\\xd0'), mobile '|&@|' null(''))
FROM '" + file_path+"'
ESCAPES OFF
QUOTES OFF     
NOTIFY 100000 
WITH CHECKPOINT ON;
COMMIT; 
file_path:txt文件路徑(絕對路徑)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM