我有一个包含简单行的文件,我想使用sql loader上传到表中。
但是,有一列包含我要排除的值:
e.r。
EC_CONS_ZIP_CODE "DECODE(:EC_CONS_ZIP_CODE,'Código Postal%',NULL,:EC_CONS_ZIP_CODE)"
我要排除并指向NULL的列是值“CódigoPostal*”。
我想修改我的控制文件以排除此值,但是不可能。
我已经习惯了控制文件:
select a.custid,
sum(case when d.transaction_type = 'Deposit' then 1 end) as DepositCount,
sum(case when d.transaction_type = 'Withdrawal' then 1 end) as WithdrawalCount,
from account a
join trandetails d on a.acnumber = d.acnumber
where a.custid = 'C00001'
group by a.custid
但是没有用,因为我有一个特殊字符(“*”和“ó”)
有没有办法避免这种角色使用它或其他方式?
是否可以使用控制文件为此单词指定模式?
此致!!
答案 0 :(得分:1)
在控制文件中将字符集设置为utf8
CHARACTERSET UTF8
另一种方法是使用正则表达式
EC_CONS_ZIP_CODE " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C.digo Postal.*','')"
或者尝试使用特定的Unicode编码ó(00F3)
EC_CONS_ZIP_CODE " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C' || unistr('\00F3')|| 'digo Postal.*','')"
答案 1 :(得分:0)
在控制文件中将该列标记为...
EC_CONS_ZIP_CODE FILLER,
...
以忽略文件中的该字段,并节省为每行调用REGEXP_REPLACE的开销。 Oracle将为您填充NULL:
let placemark = MKPlacemark(coordinate: self.coordinate, addressDictionary: addressDict)