0

我有一个包含简单行的文件,我想使用 sql loader 将其上传到表中。

但是,有一列包含我要排除的值:

123;Código Postal *;HH;456
523;Código Postal *;HI;459
723;Código Postal *;HM;450

我要排除并分配给 NULL 的列是值“Código Postal *”。

我想修改我的控制文件以排除这个值,但这是不可能的。

我已经习惯了控制文件:

 EC_CONS_ZIP_CODE  "DECODE(:EC_CONS_ZIP_CODE,'Código Postal%',NULL,:EC_CONS_ZIP_CODE)"

但不起作用,因为我有一个特殊字符(“*”和“ó”)

有没有办法避免这种字符使用它或其他方式?

是否可以使用控制文件为这个词分配模式?

问候!!

4

2 回答 2

1

在控制文件中设置字符集为utf8

CHARACTERSET UTF8

另一种方法是使用正则表达式

EC_CONS_ZIP_CODE  " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C.digo Postal.*','')"

或者尝试使用 ó (00F3) 的特定 Unicode 编码

EC_CONS_ZIP_CODE  " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C' || unistr('\00F3')|| 'digo Postal.*','')"
于 2015-10-30T10:37:01.367 回答
0

将该列标记为FILLER控制文件中以忽略文件中的该字段并节省为每一行调用 REGEXP_REPLACE 的开销。Oracle 将为您填充 NULL:

...
EC_CONS_ZIP_CODE FILLER,
... 
于 2015-10-30T13:54:33.030 回答