Отказ от загрузки строк, содержащих пустую строку в CSV, через управляющий файл SQL Loader

Я пытаюсь загрузить CSV, который может содержать/не содержать пустое значение для столбца в строке. Я хочу отказаться от строк, содержащих пустое значение, из загрузки в БД через загрузчик SQL.

Как это можно обработать в файле ctrl:

Я пробовал следующие условия в файле ctl:

when String_Value is not null

when String_Value <> ''

но строки все еще вставляются


person Saurabh Mehta    schedule 16.01.2018    source источник
comment
Это может означать только то, что значения не являются пустой строкой в ​​CSV. Может быть, пробел, перевод строки или другой управляющий символ?   -  person marekful    schedule 16.01.2018
comment
@marekful: значения определенно пусты; строка в csv для столбца показывает значение, например: 'YYY,,XXX', поэтому средний столбец имеет пустое значение   -  person Saurabh Mehta    schedule 16.01.2018
comment
Покажите нам полный MCVE. Это работает так, как вы ожидаете, поэтому вы делаете что-то другое в своем управляющем файле или получаете что-то отличное от того, что вы описали, и мы не можем понять, что именно.   -  person Alex Poole    schedule 16.01.2018


Ответы (1)


Это сработало для меня, используя либо '<>', либо '!='. Я подозреваю, что порядок предложений был неправильным для вас. Примечание colc (также третий столбец в файле данных) соответствует имени столбца в таблице.

load data 
infile 'c:\temp\x_test.dat'
TRUNCATE
into table x_test
when colc <> ''
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS 

(
    cola char,
    colb char,
    colc char,
    cold integer external
)
person Gary_W    schedule 16.01.2018