NULLIF в SQL Loader для сравнения строкового значения
У меня есть файл с простыми строками, которые я хочу загрузить в таблицу с помощью 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)"
Но не работает, потому что у меня есть специальный символ ("*" и "ó")
Есть ли способ избежать такого характера персонажа, чтобы использовать его или другим способом?
Можно ли назначить шаблон для этого слова с помощью файла управления?
С уважением!!
2 ответа
Установите набор символов 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.*','')"
Отметить этот столбец как FILLER
в контрольном файле, чтобы игнорировать это поле в файле и сохранить накладные расходы на вызов REGEXP_REPLACE для каждой строки. Oracle заполнит NULL для вас:
...
EC_CONS_ZIP_CODE FILLER,
...