【问题标题】:Why is Talend skipping more rows than just those that have a unique Key?为什么 Talend 跳过的行不仅仅是那些具有唯一键的行?
【发布时间】:2021-05-25 15:35:59
【问题描述】:

我一直在通过 Talend 从 CSV 文件将数据加载到 MySQL,SQL 表在数字上具有唯一键(不是主键)以确保没有重复。

示例表:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `network_id` varchar(45) DEFAULT NULL,
  `num1` varchar(45) DEFAULT NULL,
  `num2` varchar(45) DEFAULT NULL,
  `date` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `num2_unique` (`num2`)

我发现一些数据没有加载,我能找到的唯一原因是与 num1 上的唯一键有关。 在大约 550k 行数据中,一旦运行,表中就会丢失 1.5k 行。 我隔离了 1.5k 行并分别加载它们,效果很好,但我不知道为什么它们一开始就没有加载。

为了检查我再次尝试了 50 行,其中一行已经在 SQL 表中,因此在加载时应该被 Talend 跳过,但是 Talend 拾取了重复的唯一键,但没有加载任何加载到 SQL 的行桌子。从 CSV 文件中删除单个重复行后,其他 59 行将完美加载。

任何关于为什么会发生这种情况和/或解决方法的建议将不胜感激。

【问题讨论】:

    标签: mysql sql csv talend


    【解决方案1】:

    在您的 tDBOutput 组件中,检查您是否使用“批量插入”(或“扩展插入”或类似的东西,名称取决于 db 组件)。批量插入通常是默认行为:如果批处理中遇到问题,它将回滚您尝试插入的所有数据。 您还检查了 dboutput 组件上的架构吗?其中有一个“key”列(复选框)确保“num1”没有设置为key。

    【讨论】:

    • 选择了“扩展插入”,每次插入 100 行。我已经取消勾选它,它现在似乎正在工作。非常感谢。
    猜你喜欢
    • 2010-10-03
    • 2020-12-26
    • 1970-01-01
    • 2011-04-22
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多