Я пытаюсь загрузить текстовый файл, только те строки, где 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)"
)