我有一个包含 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;