【发布时间】:2017-07-22 17:29:42
【问题描述】:
我已将 CSV 文件导入我的 mongodb。 CSV 具有 mongo 所需的分隔符,并通过以下查询从 MySQL 数据库接收:SELECT * FROM csgo_users INTO OUTFILE 'b1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
我还尝试使用 Sequel Pro 的导出功能从 Sequel Pro 接收 CSV。
在我的 csv 中,我有 17 个字符长度的字段。在 MySQL 数据库中,此字段的类型为 VARCHAR,但包含 17 位数字。
将 csv 导入 mongo 后,我得到了这个类型为 NumberLong 的字段,但我希望它是 string。
到目前为止,我已经尝试过:
- 将 MySQL 中的类型从
varchar更改为text。 - 尝试导入带有附加标志
--headerline和--columnsHaveTypes的 csv - 我还尝试添加没有顶行的单独字段,带有标签
--fields。 -
试过这样的命令:
db.csgo_users.find({"steam_id": {$type: 18}}) .toArray() .map(function(v){ v.steam_id = new String(v); db.csgo_users.save(v) })
或者这个:
db.csgo_users.find({"steam_id": {$type: 18}})
.toArray()
.map(function(v){
v.steam_id = new String(v.toSring());
db.csgo_users.save(v)
})
- 我用forEach() 尝试了很多解决方案,例如this 或this 或this
等等
对于我尝试的最后一个示例,我没有字符串,而是 Object,{"N",u","m","b","e","r","L","o","n","g"..},但我希望它是“123456789”,而不是 Object。
我正在使用 MongoDB 3.4 docs。
所以,我的问题是,如何将“字段”类型从 NumberLong 更改为 String?
【问题讨论】:
标签: mysql mongodb csv mongo-shell