我正在使用MLCP将数据摄取到MarkLogic,但由于文件中的无效字符,许多记录被跳过。
是否有任何方法可以忽略无效字符并获取CSV中存在的所有记录而不跳过记录?
以下是日志中的错误消息:
WARN跳过第1414行的记录:abc.csv,原因:封装的令牌和分隔符之间的字符无效
如果您提供一个导致引发异常的记录的示例,将会很有帮助。然而,最常见的原因是您有一个,
作为分隔符,并且在值中有引号,而不是封装整个值。
例如:
“foo”,“bar” Y,”foo”
在这种情况下,"bar" Y
无效。你可以通过转义引号来解决这个问题:
“foo”,“"bar"” Y,”foo”
https://www.marklogic.com/blog/delimited_text_mlcp
异常是什么意思
封装的令牌和分隔符之间的无效字符意味着封装符和分隔符间有无效字符。等等,什么是封装器?简单地说,它是用于包装CSV字段或列的字符,可能包含特殊字符,如换行符。在大多数情况下,人们使用双引号作为封装符。
如何处理异常
绕过此异常的最佳方法是首先避免CSV数据格式错误。如果这不可能,如果您真的希望字段中的双引号成为字符串的一部分,则可以转义它们。但请记住,您必须使用CSV中的另一个双引号来转义双引号!