在Talend(开放式工作室,用于数据集成)7.0.1(和更早版本)中。我使用tJavaFlex记录已向数据库中插入多少行。
Talend作业详细信息: 1.将大文件拆分为多个小文件 2.在较小的文件之间进行迭代,然后将其插入数据库 3.记录已插入多少行
记录部分记录每次迭代,如下所示:
2019-01-31 09:39:20 |Stage_SalesInvoiceLine | Rows inserted 5000
2019-01-31 09:39:25 |Stage_SalesInvoiceLine | Rows inserted 5000
2019-01-31 09:39:32 |Stage_SalesInvoiceLine | Rows inserted 5000
我需要帮助弄清楚如何使其看起来像这样:
2019-01-31 09:39:32 |Stage_SalesInvoiceLine | Rows inserted 15000
tJavaFlex behaviour when changing loop position我试图在这里寻找答案,但未能解决我的问题
tJavaFlex主代码部分中的当前代码(开始和结束部分为空)
Integer Inserted = ((Integer)globalMap.get("tJDBCOutput_6_NB_LINE"));
String InsertedS = "Rows inserted " + Integer.toString(Inserted);
row19.TimeStamp = TalendDate.getDate("yyyy-MM-dd HH:mm:ss ");
row19.LogRow = "Stage_SalesInvoiceLine | " + InsertedS;
答案 0 :(得分:0)
如果在tJavaFlex中使用局部变量,则它们将在每次迭代时重置。相反,您可以在子作业开始之前定义一个全局变量,在tJavaFlex中对其进行递增,并在完成所有插入操作后检索其值。
tSetGlobalVar (NB_INSERTS set to 0)
|
OnSubjobOK
|
database inserts -- OnComponentOK -- tJavaFlex
|
tFixedFlowInput -- tFileOutputDelimited
在上面的tJavaFlex中,您可以在主要部分中增加变量:
globalMap.put("NB_INSERTS", (Integer)globalMap.get("NB_INSERTS") + (Integer)globalMap.get("tJDBCOutput_1_NB_LINE_INSERTED"))
在tFixedFlowInput
中:"Rows inserted " + (Integer)globalMap.get("NB_INSERTS")