使用Talend从两个表插入CSV文件

时间:2018-01-25 23:08:54

标签: database csv talend

我有两张表commandcommandItem

command: code, date, amount
commandItem: commandCode, price, label

我想在CSV文件中输出此内容:

Command1;26-01-2018;100
Command1;9;label1
Command1;81;label2
Command1;10;label3
Command2;26-01-2018;50
Command2;10;label1
Command2;20;label2
Command2;20;label3

你能告诉我如何使用Talend吗?

1 个答案:

答案 0 :(得分:1)

我现在无法访问我的测试数据库,以便向您展示一个表格的解决方案,所以我用文件做了,但总的想法是一样的:

enter image description here

这里的想法是读取你的命令表,并为每一行写入文件(在追加模式下);在传递到下一行之前,从items表中写入(到相同文件,在追加模式下)相关行(您需要替换我读取项目的部分)数据库输入组件的文件+ tFilterRow,包含如下所示的过滤条件:WHERE commandCode = (String)globalMap.get("row1.code"),以便仅获取当前命令的项目)

enter image description here

tFileOutputDelimited个组件的设置相同,如下所示:

enter image description here

您需要设置" Custom flush buffer size"为了将每一行立即刷新到文件,否则行的顺序不会在输出文件中保证。

输出:

Command1;26-01-2018;100
Command1;9;label1
Command1;81;label2
Command1;10;label3
Command2;26-01-2018;50
Command2;10;label1
Command2;20;label2
Command2;20;label3

我打赌还有其他(更好的?)方法来实现这一目标,但这是我想到的第一个。