我有一个 CSV 文件和一个数据库表作为输入。我需要保留数据库表中的所有记录,但排除 CSV 文件中的记录。最终所有内容都会写入 CSV 文件。
我的所有尝试都导致了数百个重复,因此我在这里面临很大的挑战。
最佳答案
这是一个快速而肮脏的技巧,但它应该适合您的需求。
将您的数据库和 CVS 输入连接到 TMap - 使用您的数据库作为主连接,使用 CSV 作为查找。像这样的东西:
tMySqlInput---->Main--->tMap---out---->tFileDelimitedOutput
^
|
|
Lookup
|
|
tFileDelimitedInput
在 tMap 内,照常映射连接列。单击查找映射区域上方的 Spanner ,并将连接类型设置为内连接。确保“匹配模型”未设置为全部,以避免交叉连接。然后,创建“out”输出连接。最后,单击此连接的 Spanner ,并将“Catch Lookup Inner Join Reject”设置为true
在“out”(即输出文件)上,您将仅获得数据库中不匹配的行。根据您的数据,您可能需要在 tFileDelimitedOutput 之前添加 tAggregateRow 以最终清除重复项。
关于talend - 比较 2 个文件并保留两个文件不共同的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227687/