У меня есть база данных, которая имеет дату как 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 и базе данных.
Проблема заключалась в выражении if, которое сравнивало полную дату отдельно, поэтому мне пришлось сравнивать только день, а не день, год и месяц.
В 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)