导入CSV到oracle数据库后没有存储数据

时间:2015-10-27 02:27:18

标签: oracle csv sql-loader ctl

我想将csv文件导入oracle数据库。 我的csv看起来像这样: enter image description here

表A:有时包含2行或3行或空。我想导入开始表B.所以我的control.ctl是:

echo OPTIONS (SKIP=5, errors=12000) 
     LOAD DATA  
     APPEND INTO TABLE xyz 
       when id <> '' and sales = '' 
     FIELDS TERMINATED BY X'09' 
     optionally enclosed by '"' 
     TRAILING NULLCOLS 
     (id "TRIM (:id)", 
      customer "TRIM (:customer)",
      qty "TRIM (:qty)", 
      sales filler)

xyz表是:

create xyz (
id varchar2(3),
customer varchar2(255),
qty varchar2(5)
)

为什么没有存储数据?

1 个答案:

答案 0 :(得分:0)

在Oracle中,空字符串被视为null。并且null永远不等于或不等于任何其他值,包括null。您需要使用is nullis not null来查找null值。

谓词

when id <> '' and sales = ''

永远不可能是真的。 id值不等于null,且sales值不等于null。也许你想要

when id is not null and sales is null

但是,如果您只是想避免加载空白行,我希望您的when条款只能在id而不是sales上。