在SQL * Loader的帮助下将NULL数据加载到不同的表中

时间:2018-01-26 15:04:23

标签: oracle null sql-loader

我有一个包含8列的CSV。对于少数行,它具有NULL数据。

为了加载CSV数据,我创建了两个具有相同定义的表。

1)TABLE_NOT_NULL加载非空数据

2)TABLE_NULL加载NULL数据

我已成功将数据加载到TABLE_NOT_NULL以下when条件:

insert into table '<TABLE_NAME>' when '<COLUMN_NAME>'!=' '.

现在,我想将NULL数据加载到名为TABLE_NULL的表中,但我无法在条件时过滤掉NULL值。

我尝试了太多东西,但没有一个起作用;像:

a)insert into table '<TABLE_NAME>' WHEN '<COLUMN_NAME>'=BLANKS

b)insert into table '<TABLE_NAME>' WHEN '<COLUMN_NAME>'=' '

任何人都可以为它建议任何解决方法或解决方案吗?

1 个答案:

答案 0 :(得分:0)

解决方法?

1

  • 将所有内容加载到TABLE_NULL
  • 插入TABLE_NOT_NULL select * From TABLE_NULL where column is null null
  • 从TABLE_NULL中删除,其中列不为空

2

  • 将所有内容加载到TABLE_NOT_NULL
  • 包含NULL值的行将不会被加载,但最终会出现在BAD中 文件
  • 使用另一个控制文件,将BAD文件加载到TABLE_NULL

3(编辑)

  • 而不是SQL * Loader,创建一个外部表 - 它就像是一个普通的 Oracle表,但它(实际上)只是文件的指针
  • 然后你会写2个INSERT语句:

insert into table_not_null select * From external_table where column is not null;

insert into table_null
select * From external_table where column is null;