Mongodb mongoimport-处理CSV“;“无限”;字符串文字为字符串,而不是双精度值

Mongodb mongoimport-处理CSV“;“无限”;字符串文字为字符串,而不是双精度值,mongodb,mongoimport,Mongodb,Mongoimport,我正在为客户端导入数据,并注意到字符串literal“Infinity”,当它出现在CSV文件中时,被视为一个双精度值,而不是实际的字符串 当值不包含在引号中时,这可能是有意义的,但我相信在这种情况下,它应该被视为字符串 获取以下(简化的)CSV输入文件: ID,Name 1,"Infinity" 按如下方式导入时: mongoimport.exe-v--host localhost:27017--username admin--password password--authenticatio

我正在为客户端导入数据,并注意到字符串literal
“Infinity”
,当它出现在CSV文件中时,被视为一个
双精度值,而不是实际的字符串

当值不包含在引号中时,这可能是有意义的,但我相信在这种情况下,它应该被视为字符串

获取以下(简化的)CSV输入文件:

ID,Name
1,"Infinity"
按如下方式导入时:

mongoimport.exe-v--host localhost:27017--username admin--password password--authenticationDatabase admin-d“无穷大测试”-c“测试数据”--文件c:\test-data.csv--type csv--headerline

结果如下:

MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
> use infinity-test
switched to db infinity-test
> db.getCollection('test-data').find()
{ "_id" : ObjectId("5a09c48ba7025b2e68885f91"), "ID" : 1, "Name" : Infinity }
>
该问题在MongoBooster中更容易发现,它给出了字段类型:


有没有办法强迫
mongoimport
将文本
的“无限”
视为字符串?

只是为了详细说明Neil的评论,在MongoDB 3.4中,
mongoimport
接受
--columnsHaveTypes
参数,该参数指定字段的数据类型。默认情况下,它根据内容猜测类型

有关可能类型的完整文档如下所示

例如,可以修改CSV标题文件,以指定两个字段都是字符串而不是数字:

ID.string(),Name.string()
1,"Infinity"
并使用
mongoimport--type=csv--columnsHaveTypes…

导入阅读,在现代版本中,您可以在导入中指定超出默认值的列类型。仅供参考,即使您使用的是较旧的MongoDB,也没有什么能阻止您安装最新的“工具”包,即
mongoimport
mongodump
等。这些工具适用于所有版本。