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