Sybase中的load table的用法
用sybase iq作为数据仓库的存储,确实有其独特的特点和优势,但是在数据ETL的时候,如果用insert、update方式,速度太慢,大概是2秒钟左右一条数据。好在iq提供了一条load语句来解决这个问题。
load语句的格式: [code]LOAD TABLE [ owner ].table-name [ ( load-specification, ... ) ]FROM ‘filename-string‘, ... [ FORMAT { ‘ascii‘ | ‘binary‘ } ] ... [ DELIMITED BY string ] ... [ STRIP { ON | OFF } ] ... [ QUOTES { ON | OFF } ] ... [ ESCAPES { ON | OFF } ] [ ESCAPE CHARACTER character ] [ WITH CHECKPOINT ON|OFF ] ... [ load-options ][/code]
下面是从一个文本文件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;
file_path:txt文件路径(绝对路径)