为什么 Talend 跳过的行多于具有唯一键的行?

Why is Talend skipping more rows than just those that have a unique Key?

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

示例Table:

  `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 行数据中,table 一次 运行 中丢失了 1.5k 行。 我隔离了 1.5k 行并分别加载它们,效果很好,但我不知道为什么它们在第一个实例中没有加载。

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

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

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