SQL 加载程序中的 NULLIF 用于比较字符串值
NULLIF in SQL Loader to compare a string value
我有一个包含简单行的文件,我想使用 sql 加载程序将其上传到 table。
但是,有一列包含我想排除的值:
e.r.
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)"
但不起作用,因为我有一个特殊字符(“*”和“ó”)
有没有办法避免使用这种字符或其他方式?
是否可以使用控制文件为这个词指定一个模式?
问候!!
在控制文件中设置字符集为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('[=12=]F3')|| 'digo Postal.*','')"
在控制文件中将该列标记为 FILLER
以忽略文件中的该字段并节省为每一行调用 REGEXP_REPLACE 的开销。 Oracle 将为您填充 NULL:
...
EC_CONS_ZIP_CODE FILLER,
...
我有一个包含简单行的文件,我想使用 sql 加载程序将其上传到 table。
但是,有一列包含我想排除的值:
e.r.
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)"
但不起作用,因为我有一个特殊字符(“*”和“ó”)
有没有办法避免使用这种字符或其他方式?
是否可以使用控制文件为这个词指定一个模式?
问候!!
在控制文件中设置字符集为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('[=12=]F3')|| 'digo Postal.*','')"
在控制文件中将该列标记为 FILLER
以忽略文件中的该字段并节省为每一行调用 REGEXP_REPLACE 的开销。 Oracle 将为您填充 NULL:
...
EC_CONS_ZIP_CODE FILLER,
...