Как удалить из базы данных с оператором LIKE и контекстной переменной MySQL в Talend

0

У меня есть база данных, которая имеет дату как String, и мне нужно удалить строки, которые имеют те же данные в файле csv, что и в базе данных. Точнее, мои даты выглядят так: 2018-03-31T23: 30: 24 + 00: 00. Я хочу, чтобы при получении такой даты удалялась из базы данных, где данные LIKE %2018-03-31%, поэтому она удалит все записи с этого дня, даже если время не совпадает. У меня есть работа, где tFileInputDelimited связан с tSortRow, а затем с tFlowToIterate. После этого у меня есть tJava, где я извлекаю дату, а затем tMysqlInput, где запрос имеет предложение where следующим образом: WHERE purchase_date LIKE '% "+context. date+"% ". Затем, с запуском, если соединение, у меня есть tMysqlRow, в котором у меня есть инструкция delete с тем же предложением where. После этого, конечно, у меня есть tMysqlCommit. Context.date выполняется следующим образом:

context.dataaa=(String)globalMap.get("row6.purchase_date");
context.month=context.dataaa.substring(5,7);
context.year=context.dataaa.substring(0,4);
context.day=context.dataaa.substring(8,10);
context.date=context.year+"-"+context.month+"-"+context.day;

Проблема в том, что он не удаляет из базы данных. Я хочу, чтобы он шел по строке и удалял все мои записи, которые имеют тот же день в csv и базе данных.

Теги:
talend

2 ответа

0
Лучший ответ

Проблема заключалась в выражении if, которое сравнивало полную дату отдельно, поэтому мне пришлось сравнивать только день, а не день, год и месяц.

0

В Talend вы можете определить шаблон столбца Date для некоторого использования.

Здесь у меня есть tFileInputDelimited с датой столбца:

Column: date
Type : Date
pattern : "yyyy-MM-dd'T'hh:mm:ss"

Это позволило мне прочитать файл со значением, подобным 2018-03-31T23:30:24 потому что здесь шаблон используется для "разбора" String из файла в Date. Теперь, если мы добавим LogRow и обновим схему этого компонента, мы можем определить другой шаблон для форматирования Date

Column: date
Type : Date
pattern : "yyyy-MM-dd"

Вход: 2018-03-31T23:30:24 Выход: 2018-03-31

Знайте, если вы не хотите играть со схемой, вы можете преобразовать/форматировать дату в String с TalendDate.formatDate("yyyy-MM-dd", row1.date)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню