用SQL*Loader导入blob及clob数据一例

 

导入blob或clob数据总令人有些头疼。本文记录了用Oracle的SQL*Loader实现该功能的办法。

 

首先定义一个用于测试的表:

 

 

CREATE TABLE msgm_mstr (
  msgm_id        NUMBER(20),
  msgm_to        VARCHAR2(100),
  msgm_cc        VARCHAR2(100),
  msgm_subject   VARCHAR2(100),
  msgm_date      DATE,
  msgm_content   CLOB
);

 

 

msgm_content是消息正文,用clob数据类型表示。在数据文件中该字段仅保存每条记录的消息正文的clob文件名。

以下是数据文件示例(假设名为msgm_mstr.tsd):

 

1,[email protected],,"Greeting from Mars",01-JAN-2006,msg_blob001.dat
2,[email protected],[email protected],"Special discount",02-FEB-2006,msg_blob002.dat

 

msg_blob001.dat, msg_blob002.dat文件中保存msgm_content的真正内容。

 

导入上述数据需要写如下控制文件:

 

LOAD DATA 
INFILE 'msgm_mstr.tsd'
   INTO TABLE msgm_mstr
   FIELDS TERMINATED BY ','
( msgm_id       CHAR(20),
  msgm_to       CHAR(100),
  msgm_cc       CHAR(100),
  msgm_subject  CHAR(100),
  msgm_date     DATE "DD-MON-YYYY" ":msgm_date"
  clob_filename FILLER CHAR(100),
  msgm_content  LOBFILE(clob_filename) TERMINATED BY EOF
)

 

上述控制文件的关键在于定义一个clob_filename的伪字段(在SQL*Loader中就是filler)以获取clob文件名,紧接着用lobfile从该文件导入消息正文。

 

如果需要导入blob类型的数据,其方法完全一样。

你可能感兴趣的:(oracle,sql,Yahoo,Gmail)