0

我想将 csv 文件导入到 oracle 数据库。我的 csv 看起来像这样: 在此处输入图像描述

表 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)
)

为什么没有存储数据?

4

1 回答 1

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子句只是 on idnot on sales

于 2015-10-27T02:34:22.893 回答