2013-12-18 2 views
2

Я хочу читать значения (целые числа) из файла CSV и вставлять их в таблицу базы данных. Однако для определенного столбца таблицы, если значения, полученные из файла CSV, не относятся к интервалу, значение для записи в базе данных должно быть NULL.Talend - Вставить «NULL» в колонку базы данных, тип которой «NUMBER»

Например, в моем приложении Java в этом случае: insert.setNull(3, java.sql.Types.INTEGER);.

Но как это сделать в Talend, если тип столбца равен «NUMBER»?

ответ

4

Просто используйте компонент tMap между выводами tFileInput и выводами базы данных для переноса этого простого преобразования. Внутри этого компонента в нижней правой панели (схема вывода) установите флажок, чтобы ваше поле было нулевым. Будьте осторожны, поскольку поля, поступающие из CSV, по умолчанию не имеют значения NULL.

enter image description here

Наконец, на верхней правой панели (выход преобразование), на целевой области (тот, который вы вынуждены быть обнуляемым) написать трехкомпонентное выражение. Например:

(предполагается, что входящее соединение называется input_row)

(input_row.field >= 0 && input_row.field <= 3) ? <value to write if inside interval> : null 

То, что я хочу сказать, что если поле обнуляемые по обе стороны Talend и на целевой таблице БД, то скучный Java null твой друг.

+0

Я не могу назначить 'null' Integer в компоненте tMap. – user2144555

+0

Вы можете, если поле Integer равно NULL. Вы уверены, что выбран правильный флажок для этого поля? Я добавил скриншот к моему ответу. –

+0

Это дает мне «не может вставить NULL в (« ТАБЛИЦА ».« COLUMN »)« ... – user2144555

Смежные вопросы