我的问题很简单,但我到处搜索,但只找到模糊且无效的解决方案。
我正在使用 Talend Data Integration 。 我设置了一个非常简单的作业,它将一组行从 Excel 文件导入到 Microsoft SQL 数据库中。
我的问题是插入这些新行后,我需要进一步处理它们,并且我需要知道它们的主键,因为它们是由数据库在插入时生成的。
我尝试过 tMSSqlLastInsertId 组件,但它总是返回零。 我尝试从数据库中重新选择,但主键莫名其妙地也为零。 即使我已经检查以确保数据库中的条目确实设置了正确的主键。
奇怪且显然无法解释的问题。也许是提交/锁定问题?
我的建议是重新选择不同子作业中的行,以在 tMsqlOutput 组件之后强制提交。当然,您需要在后续输入阶段使用不同的数据库连接,以确保输出阶段的提交顺利完成。并小心检查输入阶段中的架构(列的数量、类型、顺序:您还会有一个 - 自动键)。比如:
[starting component of the subjob]--->row---->[...]-->row--->tMSSqlOutput
|
|
OnSubjobOk
|
|
\ /
'
tMSSInput---row--->[...]