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文件路径(绝对路径)

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5012.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论