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



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

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

1( 加载非空数据TABLE_NOT_NULL

2( 加载空数据TABLE_NULL

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

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

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

我尝试了太多的东西,但没有一个奏效;比如:

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

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

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

解决方法?

1

  • 将所有内容加载到TABLE_NULL
  • 插入到 TABLE_NOT_NULL选择 * 从列不为空的TABLE_NULL
  • 从列不为空的TABLE_NULL中删除

阿拉伯数字

  • 将所有内容加载到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;

相关内容

  • 没有找到相关文章

最新更新