【问题标题】:Talend job truncate records when i killed the job and run again当我终止作业并再次运行时,Talend 作业截断记录
【发布时间】:2018-03-19 13:26:52
【问题描述】:

我正在使用 Talend open studio for Data Integration 工具将 sql server 表数据传输到 mysql server 数据库。

我有 4000 万条记录放入表中。 我创建并运行了作业,但在插入大约 2000 万后,连接失败。

当我再次尝试插入数据时,talend 作业首先从表中截断数据,然后从头开始插入数据,

【问题讨论】:

  • 那么,你的问题是什么?
  • 我会一步一步向你解释。
  • 1.我开始在服务器上插入数据的 Talend 作业,2.插入 20 万条记录后服务器连接丢失(总记录为 4000 万条),现在我想继续插入作业过程,从表中截断插入的记录。
  • 希望你明白我的意思
  • 在我看来,user3135980 的答案就是您要找的。它不适合你吗?

标签: mysql sql-server-2008 talend


【解决方案1】:

这个问题似乎不完整,但假设您希望表在每次加载之前不被截断,请检查“表上的操作”属性。它应该设置为“默认”或“如果不存在则创建表”。

现在,如果您的问题是处理作业的重新启动能力,该作业应在下一次运行时从 2000 万行恢复,您可以通过多种方式实现此目的。在您的情况下,由于您要处理大量记录,因此具有分页之类的机制将有助于您以块的形式加载数据(假设一次 10000 条)并将提交间隔设置为 10000 循环。每次成功输入后在包含 10000 条记录的数据库中,使用数据中的时间戳或增量键在一个日志表中输入一个条目(以标记检查点)。你的工作应该是这样的: tLoop--{从表中读取检查点}--tMSSqlInput--tMySqlOutput--{在表中加载新检查点}

【讨论】:

  • 感谢您的回复,其实我已经将“默认”设置为操作表
  • 当我们重新开始 talend 工作时,我需要一个不会截断插入记录的属性或函数。
【解决方案2】:

您可以在上下文变量中设置属性,例如“loadType”,其值为“初始”或“增量”。 在截断表之前,你应该有“if”链接来检查这个变量的值是什么,如果它是“初始”,它将被截断并且它是“增量”,那么你可以运行你的子作业来加载数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多