忽略插入错误

Posted

技术标签:

【中文标题】忽略插入错误【英文标题】:Ignore insert errors 【发布时间】:2013-07-29 14:26:10 【问题描述】:

我正在使用水壶 4.4 从 mongodb 表加载到 mysql 表 某行中的一列给出错误:字符串值不正确:列的“\xF0\x9F\x98\x8D”。 我查看了一些论坛并将该列修改为 utf8mb4_general_ci ,但仍然给出了相同的错误。

该表有 120 万条以上的记录,我无法确定是哪一行出现了错误。 在表中有 _id 是对象 id。我尝试在 _id 列上按顺序加载,当它因错误而停止时,然后尝试从我之前的加载中加载 > max(_id)。 有了这个,它给出了重复,我无法确定哪一行给出了错误。

1) 有没有办法确定哪一行出现错误或解决此错误?

2) 在表格输出步骤中,有一个名为插入忽略错误的选项,我检查了它并尝试运行。 现在它没有给我任何错误,但在水壶上它显示没有。的记录写为 1192628,但该表只有 1192626 条记录。 所以缺少 2 条记录。 选项是否会忽略有错误的行? 如果是这样,这些错误记录在哪里? 我试图阅读一些文件,但没有一个文件有这些信息。

如果你们中的任何人都可以帮助我,那就太好了。

谢谢你, 深度

【问题讨论】:

【参考方案1】:

在您的情况下,您似乎可以根据需要多次重新运行加载。在Table Output 步骤中,检查“忽略插入错误”正是这样做的。错误将被忽略且不记录。

在您的情况下,我会做的是取消选中“忽略插入错误”,然后连接您的 Table Output 的错误输出并将其运行到文本文件或 xml 文件或其他表输出。重新运行加载,导致错误的两行将在您的错误输出中。

【讨论】:

感谢您的帮助.. 错误的任何解决方案 Incorrect string value: '\xF0\x9F\x98\x8D' for column.?【参考方案2】:

您似乎正在获取二进制数据,尝试将其转换为字符串:在加载 db 表输出之前添加新的选择/重命名值。 单击选择/重命名步骤,转到元数据选项卡,选择您的输入字段,输入:字符串,二进制转普通:Y,编码:UTF-8(在我的情况下) 十指相扣!

【讨论】:

以上是关于忽略插入错误的主要内容,如果未能解决你的问题,请参考以下文章

更新或插入 SQL Server 时忽略错误行

忽略 jdbc 批处理中的错误语句

在 Doctrine2/Symfony2 中的重复条目上插入忽略

从数据框批量插入到数据库,忽略 Pyspark 中的失败行

MySqlDb 在插入忽略语句中抛出操作数应包含 1 列

批量从Dataframe插入到DB,忽略Pyspark中的失败行