如果该属性的值为null,我有一个包含["]的csv文件。例如:
a,b,c
1,2,3
4,[""],6
7,8,9
我有两个不同Mongo版本的RHEL系统:2.4.1和3.4 当我运行此命令时:
time mongoimport --host hostname:27017 --db test --collection abc --file example.csv --type csv
这会在版本3.4中引发错误:
bare " in non-quoted-field
虽然在2.4.1中工作正常!我需要它在3.4上工作。谁有人建议解决方案?我拥有的CSV文件非常庞大,我不想改变数据。
答案 0 :(得分:1)
MongoImport 3.4 documentation说:
csv解析器接受符合RFC RFC 4180的数据 结果,反斜杠不是有效的转义字符。如果你使用 用双引号括起CSV数据中的字段,必须要转义 内部双引号通过预先添加另一个双引号。
因此,在你的情况下,即[""]
,它认为第一个引用是转义字符,因为它留下了一个裸"
并且由于失败。要转义双引号,您可以像[""""]
一样使用它。这里每个双引号都会逃脱下一个双引号
要解决此问题,您有以下两个选项:
[""]
仅表示空字段,则可以使用空字符串直接替换此模式。 Mongoimport
不会为相应文档中的空值创建字段。编辑:
如上所述,它用于表示空值,然后您可以使用sed完全替换此字符串
sed 's/\[""\]//g' FILE-NAME
答案 1 :(得分:0)
我通过以xlsx格式打开它并随后以csv格式再次保存来解决了该问题。这是因为excel更正了格式。