在我的工作中,我将数据从Excel复制到SQL表。 为了保持外键约束,我必须在复制数据之前查看。
任务就是这样。 我必须复制Table2中的数据(id键值)。 我的Excel工作表包含id和keys列的数据。表1有两列id和value。
对于值列的数据,我想查看Table1的相应条目,其中包含Table2中当前记录的id。我必须将Table1的value列中的数据复制到Table2的值列。
Excel(id 1 2 3,键a b c) 表1(id 1 2 3,值123 456 789) 所需输出:表2(id 1 2 3,键a b c,值123 456 789) 当前输出:表_2(id 1 2 3,键a b c,值null null null)
如何正确映射?
答案 0 :(得分:0)
你完全按照需要完成的工作来完成工作,所以这不是你的工作布局问题。
如果您希望Excel文档中的每条记录在数据库表中都有匹配的记录,那么您应该在tMap连接中使用inner join
条件,如下所示:
然后这会让你有一个输出来抓取所有没有加入的东西(这是你的问题):
这应该显示您的源(不是查找)文件中不匹配的所有内容。我怀疑你的连接条件(基本上是WHERE ExcelDoc.id = Table.Id
)的所有内容都无法匹配,即使它看起来应该是这样。这可能是数据类型不匹配,因为它们被读入Talend(因此Java / Talend数据类型,如int / Integer或String而不是DB类型),或者因为您的id
列之一具有无关的空白填充
如果您发现某个来源中的id
列确实有任何填充,那么您应该能够在加入之前的前一步中转换它,或者甚至只是在连接中进行转换:
我建议的另一件事是你在组件之间命名你的流(只需点击它们来改变名称),特别是当你加入tMap中的任何东西时。