首页 文章

Talend中的数据库查找

提问于
浏览
0

在我的工作中,我将数据从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)

我该如何正确映射这个?

enter image description here

enter image description here

1 回答

  • 0

    你已经完全按照需要完成的工作来设置工作,所以这不是你的工作布局问题 .

    如果您希望Excel文档中的每条记录在数据库表中都有匹配的记录,那么您应该在tMap连接中使用 inner join 条件,如下所示:

    Join Condition in tMap

    然后,这允许您有一个输出来抓取所有未加入的内容(这是您的问题):

    Join Rejects configuration

    这应该显示您的源(不是查找)文件中不匹配的所有内容 . 我怀疑你的连接条件(基本上是 WHERE ExcelDoc.id = Table.Id )的所有内容都无法匹配,即使它看起来应该如此 . 这可能会导致数据类型不匹配,因为它们被读入Talend(因此Java / Talend数据类型,如int / Integer或String而不是DB类型),或者因为您的某个 id 列具有无关的空白填充 .

    如果您发现某个源中的 id 列实际上有任何填充,那么您应该能够在加入之前的前一步中转换它,或者甚至只是在连接中进行转换:

    Transform inputs in the join itself

    我建议的另一件事是你在组件之间命名你的流(只需点击它们来改变名称),特别是当你加入tMap中的任何东西时 .

相关问题