mongoimport - 将 CSV "Infinity" 字符串文字视为字符串,而不是双精度值
mongoimport - treat CSV "Infinity" string literal as string, not as Double value
我正在为客户导入数据,我注意到当字符串文字 "Infinity"
出现在 CSV 文件中时,它被视为 Double
值而不是实际字符串。
当值未包含在引号中时,这可能有意义,但我相信在这种情况下,它应该被视为字符串。
采用以下(简化的)CSV 输入文件:
ID,Name
1,"Infinity"
导入时如下:
mongoimport.exe -v --host localhost:27017 --username admin --password password --authenticationDatabase admin -d "infinity-test" -c "test-data" --file 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
将文字 "Infinity"
视为字符串?
为了详细说明 Neil 的评论,在 MongoDB 3.4 中,mongoimport
接受 --columnsHaveTypes
参数,该参数指定字段的数据类型。默认情况下,它根据内容猜测类型。
有关可能类型的完整文档是 https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-columnshavetypes
例如,您可以修改 CSV 头文件以指定两个字段都是字符串而不是数字:
ID.string(),Name.string()
1,"Infinity"
并使用 mongoimport --type=csv --columnsHaveTypes ...
导入
我正在为客户导入数据,我注意到当字符串文字 "Infinity"
出现在 CSV 文件中时,它被视为 Double
值而不是实际字符串。
当值未包含在引号中时,这可能有意义,但我相信在这种情况下,它应该被视为字符串。
采用以下(简化的)CSV 输入文件:
ID,Name
1,"Infinity"
导入时如下:
mongoimport.exe -v --host localhost:27017 --username admin --password password --authenticationDatabase admin -d "infinity-test" -c "test-data" --file 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
将文字 "Infinity"
视为字符串?
为了详细说明 Neil 的评论,在 MongoDB 3.4 中,mongoimport
接受 --columnsHaveTypes
参数,该参数指定字段的数据类型。默认情况下,它根据内容猜测类型。
有关可能类型的完整文档是 https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-columnshavetypes
例如,您可以修改 CSV 头文件以指定两个字段都是字符串而不是数字:
ID.string(),Name.string()
1,"Infinity"
并使用 mongoimport --type=csv --columnsHaveTypes ...