$ mongoimport --db InfDB --collection SFTest --file InfMapRed.json
通过以下命令导入JSON文件(每行13GB,1个JSON文档):
2015-10-24T06:11:41.799+0000 connected to: localhost
2015-10-24T06:11:44.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:11:47.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:11:50.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:11:53.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:11:56.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:11:59.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:02.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:05.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:08.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:11.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:14.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:17.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:20.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
2015-10-24T06:12:23.788+0000 [........................] InfDB.SFTest 20.5 MB/13.0 GB (0.2%)
....
此命令用于在2.6中使用先前的存储引擎正常工作,但现在不会超过0.2%。该程序不断反复打印下面的行。该集合通过.count()显示1000条记录。
<form method="post" enctype="multipart/form-data">
<?php
if(isset($_FILES['stud_photo']))
{
if(empty($_FILES['stud_photo']['type'][0]))
{
//your code here for file not found
}
else
{
//your code here for file found
}
}
?>
写了一个简单的python脚本来读取文件并顺利插入文档,并且工作正常。
答案 0 :(得分:3)
我遇到了大型json文件的问题, batchSize没有解决问题, 但是numInsertionWorkers确实
这仅适用于mongo 3:
在您的情况下,有1名工人,您可以插入0.2%的数据, 所以0.2 / 100 = 500,你需要500名工人一次获取数据
mongoimport --db InfDB --collection SFTest --file InfMapRed.json --numInsertionWorkers 500
参考:https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption--numInsertionWorkers
答案 1 :(得分:2)
使用较小的批量大小解决了这个问题。
mongoimport --db InfDB --collection SFTest --file InfMapRed.json --batchSize 100
这在导入大型文档时非常有用,默认批量大小为10000。
答案 2 :(得分:1)
检查辅助人员。当我在v3.0.8中遇到这个问题时,辅助设备被卡在RECOVERING状态,并且日志显示了原因:
2015-11-19T00:35:01.271+0000 I REPL [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-19T00:42:16.360+0000 I REPL [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-19T00:45:01.410+0000 I REPL [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-19T00:52:16.496+0000 I REPL [rsBackgroundSync] replSet error RS102 too stale to catch up
2015-11-19T00:55:01.551+0000 I REPL [rsBackgroundSync] replSet error RS102 too stale to catch up
默认情况下,mongoimport
以“多数”写入操作运行。由于我的副手是陈旧的,他们无法复制导入操作,主要人员正在等待永远不会发生的复制。
在辅助节目上执行manual resync后,我再次尝试mongoimport
成功。或者,如果只有一个辅助节点是RECOVERING,则可以使用--writeConcern
选项将写入关注点设置为较低的数字。