【问题标题】:Talend Truncate Table does not empty tableTalend Truncate Table 不为空表
【发布时间】:2015-04-29 08:54:35
【问题描述】:

我使用 TOS 将一个 SQL Server 表传输到另一个 SQL Server。这或多或少有效。但是我有一个截断表格的问题。在输出表的属性中,我为表操作定义“截断表”,为数据操作定义“插入”。在第二次运行时,我得到了很多重复的键错误。如果我在 SQL Server Management Studio 中手动运行“TRUNCATE TABLE”,则工作正常。

truncate table 是否存在任何已知问题? Talens 版本是 5.3.2

提前致谢

【问题讨论】:

  • 推测 Talend 通过链接服务器连接,远程连接上不允许直接 DDL 命令。您能否更改应用程序运行的特定查询文本?
  • 为了简单起见 - 您可以尝试在插入流之前给出 truncate table tablename 命令..通过 tMssqlRow 组件..so 从输出组件中删除 truncate 并使用 tmssqlrow 组件
  • 不,在这种情况下,连接是通过 JDBC 进行的。据我所知,更改查询是不可能的。我可以看到声明,但它是在您每次保存作业时生成的。
  • 嗨 garpitmzn,谢谢你的建议。但我得到 tMssqlRow 不工作

标签: sql-server talend


【解决方案1】:

我模仿了这个场景,它在 Talend Platform for data Management 版本 5.6.1 中运行良好。我无法在 TOS 上对其进行测试,但也许您可以升级到最新的 TOS 版本并重试。为了彻底,我尝试使用单独的连接组件和内置连接。唯一的区别是使用单独的连接对象需要一个提交对象。

我推荐的解决方法是:

  • 创建一个 proc 来截断您的表并从 tMSSqlSP 组件调用它
  • 将此连接到您的原始子作业,该子作业使用 OnSubJobOK 流在两个表之间传输数据。
  • 在您的 tMSSqlOutput 组件(执行截断/插入)中,表上的操作使用默认值(因此它不会截断表)
  • 对于数据使用插入操作

我试过这个方法,它有效。此解决方法将节省您处理 TOS 问题的时间和挫败感。

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 2018-06-09
    • 2020-03-08
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多