Oracle SQLLDR Сбросить строки с помощью предложения WHEN не работает - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь загрузить текстовый файл, только те строки, где 3-й столбец 'c_nbr' не заканчивается с 'ABCD'. Поскольку предложение WHEN действительно примитивно, я не могу его использовать, обрезая / подстроку с ним.

Мой второй выбор заключался в том, чтобы поместить последние 4 символа поля c_nbr в столбец с именем «MSGCOL» и использовать этот столбец в моем предложении WHEN, например «WHEN MSGCOL <> 'ABCD'».

MSGCOL получает значение «ABCD», где столбец «c_nbr» оканчивается на «ABCD», но предложение WHEN не отменяет их.

Почему это не работает? Как я могу достичь своей цели? Могу ли я запустить SQL Query из управляющего файла sqlldr? Как "Удалить из tbl_load, где c_nbr как"% ABCD ";" в конце загрузки команды?

Контрольный файл SQLLDR: -

OPTIONS (ERRORS=9999)
LOAD DATA

INFILE '052140.csv'
BADFILE '052140.BAD'
DISCARDFILE '052140.DIS'

INFILE '055913.csv'
BADFILE '055913.BAD'
DISCARDFILE '055913.DIS'

APPEND INTO TABLE tbl_load
WHEN MSGCOL  <> 'ABCD'
FIELDS TERMINATED BY ',' optionally enclosed by '"' trailing nullcols 
(
id "TRIM(UPPER(:ID))",
pid,
c_nbr "TRIM(:c_nbr)",
a_nbr "SUBSTR(TRIM(:a_nbr), 1, 25)",
P_REASON2 FILLER,
MSGCOL EXPRESSION "substr(trim(:c_nbr), length(trim(:c_nbr))-3, 4)"
)
...