簡體   English   中英

如何在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。 我希望當它得到這樣的日期時,從數據庫中刪除數據,例如%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列的模式以進行某些使用。

在這里,我有一個帶有列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

知道,如果您不想使用該架構,則可以使用TalendDate.formatDate("yyyy-MM-dd", row1.date)將日期轉換/格式化為String

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM