Talend iSQLOutput-仅更新选定列

Talend iSQLOutput-仅更新选定列,talend,Talend,我的流程很简单,我只是将一个原始文件读入一个SQL表 有时,原始文件包含与现有记录对应的数据。在这种情况下,我不想插入新记录,只想更新SQL表中的现有记录。挑战在于,有一个“记录创建日期”列,我在创建记录时初始化该列。更新操作也会覆盖该列。我只是想避免覆盖该列,同时根据来自原始文件的信息更新其他列 到目前为止,我还不知道该怎么做。有人可以推荐吗?我默认创建列自动填充到SQL数据库本身中。我改变了流程,只更新了剩下的记录。Talend作业现在不涉及该列。问题解决了 另一个提醒是“简化被低估了”。:

我的流程很简单,我只是将一个原始文件读入一个SQL表

有时,原始文件包含与现有记录对应的数据。在这种情况下,我不想插入新记录,只想更新SQL表中的现有记录。挑战在于,有一个“记录创建日期”列,我在创建记录时初始化该列。更新操作也会覆盖该列。我只是想避免覆盖该列,同时根据来自原始文件的信息更新其他列


到目前为止,我还不知道该怎么做。有人可以推荐吗?

我默认创建列自动填充到SQL数据库本身中。我改变了流程,只更新了剩下的记录。Talend作业现在不涉及该列。问题解决了


另一个提醒是“简化被低估了”。:)

记录创建日期是否被触发器覆盖?如果在更新之前是这种情况,您可以禁用触发器,然后重新启用插入。没有任何触发器。这是一种非常简单的“读取原始文件,将其推送到sql表”的流程。我刚刚更新了tSQLOutput组件,使更新优先于插入,这样,如果存在一个键为的行,则应该在sql表中更新记录。否则将执行插入操作。这是预期的流量。唯一的挑战是更新操作还覆盖现有记录的历史信息(记录创建日期)。我打算保持流程不变,只是想以某种方式使“记录创建日期”列不可变。您还没有确定“记录创建日期”列是如何修改的。它必须在update语句本身中,或者在表上的触发器中,除非这涉及到另一段代码。如果不知道列是如何被修改的,就很难告诉您如何防止这种情况发生。