如何在 Talend 中使用 LIKE 运算符和上下文变量 MySQL 从数据库中删除
How to delete from database with LIKE operator and context variable MySQL in Talend
我有一个日期为字符串的数据库,我必须删除 csv 文件中与数据库中具有相同数据的行。更准确地说,我的日期看起来像这样 2018-03-31T23:30:24+00:00。我希望当它得到这样的日期时,从数据库中删除数据 LIKE %2018-03-31%,这样它将删除那天的所有记录,即使时间不同。
我有一份工作,其中 tFileInputDelimited 与 tSortRow 连接,然后连接到 tFlowToIterate。之后,我有一个 tJava,我在其中提取日期,然后是一个 tMysqlInput,其中查询具有这样的 where 子句: WHERE purchase_date
LIKE '%"+context.date+"%' 。然后,使用 运行 if 连接,我有 tMysqlRow,其中我有带有相同 where 子句的 delete 语句。在那之后,当然,我有 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
的文件,因为在这里,该模式用于 "parse" 将文件中的 String
转换为 Date
。现在,如果我们添加 LogRow
并更新此组件的架构,我们可以定义不同的模式来格式化 Date
Column: date
Type : Date
pattern : "yyyy-MM-dd"
输入:2018-03-31T23:30:24
输出:2018-03-31
知道,如果你不想玩 Schema,你可以 convert/format 一个日期到 String
和 TalendDate.formatDate("yyyy-MM-dd", row1.date)
我有一个日期为字符串的数据库,我必须删除 csv 文件中与数据库中具有相同数据的行。更准确地说,我的日期看起来像这样 2018-03-31T23:30:24+00:00。我希望当它得到这样的日期时,从数据库中删除数据 LIKE %2018-03-31%,这样它将删除那天的所有记录,即使时间不同。
我有一份工作,其中 tFileInputDelimited 与 tSortRow 连接,然后连接到 tFlowToIterate。之后,我有一个 tJava,我在其中提取日期,然后是一个 tMysqlInput,其中查询具有这样的 where 子句: WHERE purchase_date
LIKE '%"+context.date+"%' 。然后,使用 运行 if 连接,我有 tMysqlRow,其中我有带有相同 where 子句的 delete 语句。在那之后,当然,我有 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
的文件,因为在这里,该模式用于 "parse" 将文件中的 String
转换为 Date
。现在,如果我们添加 LogRow
并更新此组件的架构,我们可以定义不同的模式来格式化 Date
Column: date
Type : Date
pattern : "yyyy-MM-dd"
输入:2018-03-31T23:30:24
输出:2018-03-31
知道,如果你不想玩 Schema,你可以 convert/format 一个日期到 String
和 TalendDate.formatDate("yyyy-MM-dd", row1.date)