龙舍·嬴皇志
透过我的双眼看世界
MongoDB用mongoimport 导入大文件报错解决方案

用Mongoexport 可以很方便的导出一个集合到Json格式 同时也可以用MongoImport 将数据导入进去,之前用的时候都没有导入太大的文件,大的数据迁移都是用的restore导入的。这次遇到一次数据迁移导出的json 文件大概有4.7G左右,再倒入的时候出现了问题

mongoimport -h127.0.0.1 -d database -c indexs < indexs.dat

却出现了如下的错误提示

2016-09-05T23:30:35.773+0800	connected to: 127.0.0.1
2016-09-05T23:30:37.653+0800	Failed: lost connection to server
2016-09-05T23:30:37.653+0800	imported 0 documents

Mongo的错误提示也是醉了,这也忒不友好了, 完全是再猜,不过通过万能的大G还是搜到了解决方案,原来是因为Mongo对单次处理好像有大小限制(16m)好像是,所以大文件会出问题,这应该是个Bug mongoimport 默认会10000条 为一个批量导入数据,但实际上我的单条数据太大了,每51条数据就达到了16m 所以10000条导入一次肯定是不行的。幸好他有个参数 –batchSize 可以指定每次批量导入的条数 设置小一些就OK了。

mongoimport -h127.0.0.1 -d database -c indexs < indexs.dat --batchSize 1

这样你会看到他会分开执行导入任务

2016-09-05T23:12:48.622+0800	connected to: 127.0.0.1
2016-09-05T23:12:51.632+0800	d.indexs_value	42.6 MB
2016-09-05T23:12:54.626+0800	d.indexs_value	79.4 MB
2016-09-05T23:12:57.607+0800	d.indexs_value	115.9 MB
2016-09-05T23:13:00.618+0800	d.indexs_value	151.5 MB

最后修改于 2016-09-05