我有一个json文件,包含大约2000条记录。与mongo数据库中的文档相对应的每条记录的格式如下:
{jobID:"2597401",
account:"XXXXX",
user:"YYYYY",
pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}},
startEpoch:"1338497979",
runTime:"1022",
execType:"user:binary",
exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64",
numNodes:"4",
sha1:"5a79879235aa31b6a46e73b43879428e2a175db5",
execEpoch:1336766742,
execModify: new Date("Fri May 11 15:05:42 2012"),
startTime: new Date("Thu May 31 15:59:39 2012"),
numCores:"64",
sizeT:{bss:"1881400168",text:"239574",data:"22504"}},
每条记录都在JSON文件的一行中,唯一的换行符位于每条记录的末尾。因此,文档中的每一行都以“{jobID:”开头......我试图使用以下命令将它们导入到mongo数据库中:
mongoimport --db dbName --collection collectionName --file fileName.json
但是,我收到以下错误:
Sat Mar 2 01:26:12 Assertion: 10340:Failure parsing JSON string near: ,execModif
0x10059f12b 0x100562d5c 0x100562e9c 0x10025eb98 0x10000e643 0x100010b60 0x10055c4cc 0x1000014b7
0x100001454
0 mongoimport 0x000000010059f12b _ZN5mongo15printStackTraceERSo + 43
1 mongoimport 0x0000000100562d5c _ZN5mongo11msgassertedEiPKc + 204
2 mongoimport 0x0000000100562e9c _ZN5mongo11msgassertedEiRKSs + 12
3 mongoimport 0x000000010025eb98 _ZN5mongo8fromjsonEPKcPi + 1576
4 mongoimport 0x000000010000e643
_ZN6Import8parseRowEPSiRN5mongo7BSONObjERi + 2739
5 mongoimport 0x0000000100010b60 _ZN6Import3runEv + 7376
6 mongoimport 0x000000010055c4cc _ZN5mongo4Tool4mainEiPPc + 5436
7 mongoimport 0x00000001000014b7 main + 55
8 mongoimport 0x0000000100001454 start + 52
Sat Mar 2 01:26:12 exception:BSON representation of supplied JSON is too large: Failure parsing
JSON string near: ,execModif
Sat Mar 2 01:26:12
Sat Mar 2 01:26:12 imported 0 objects
Sat Mar 2 01:26:12 ERROR: encountered 1941 errors
我不知道问题是什么。有人可以推荐一个解决方案吗?
答案 0 :(得分:252)
我能够使用以下查询修复错误:
mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray
希望这对某人有帮助。
答案 1 :(得分:48)
试试这个,
mongoimport --db dbName --collection collectionName <fileName.json
实施例,
mongoimport --db foo --collection myCollections < /Users/file.json
connected to: *.*.*.*
Sat Mar 2 15:01:08 imported 11 objects
问题是因为你的日期格式。
我使用了相同的JSON和修改日期,如下所示
{jobID:"2597401",
account:"XXXXX",
user:"YYYYY",
pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}},
startEpoch:"1338497979",
runTime:"1022",
execType:"user:binary",
exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64",
numNodes:"4",
sha1:"5a79879235aa31b6a46e73b43879428e2a175db5",
execEpoch:1336766742,
execModify:{"$date" : 1343779200000},
startTime:{"$date" : 1343779200000},
numCores:"64",
sizeT:{bss:"1881400168",text:"239574",data:"22504"}}
希望这会有所帮助
答案 2 :(得分:17)
控制台:
mongoimport -d dbName -c collectionName dataFile.js
答案 3 :(得分:17)
使用 mongoimport ,您可以实现相同的
mongoimport --db test --collection user --drop --file ~/downloads/user.json
其中,
test - Database name
user - collection name
user.json - dataset file
如果已经存在, --drop
将删除该集合。
答案 4 :(得分:5)
您的语法在以下方面显示完全正确:
mongoimport --db dbName --collection collectionName --file fileName.json
确保您位于正确的文件夹中或提供完整路径。
答案 5 :(得分:4)
我使用了以下命令导出DB
mongodump --db database_name --collection collection_name
以下命令为我导入DB
mongorestore --db database_name path_to_bson_file
答案 6 :(得分:3)
在另一个终端上运行import命令。 (不在mongo shell中。)
mongoimport --db test --collection user --drop --file ~/downloads/user.json
答案 7 :(得分:2)
此命令适用于未指定集合的位置。
mongoimport --db zips "\MongoDB 2.6 Standard\mongodb\zips.json"
执行命令后的Mongo shell
connected to: 127.0.0.1
no collection specified!
using filename 'zips' as collection.
2014-09-16T13:56:07.147-0400 check 9 29353
2014-09-16T13:56:07.148-0400 imported 29353 objects
答案 8 :(得分:1)
cd "C:\Program Files\MongoDB\Server\4.4\bin"
mongoimport -d tymongo -c test --type json --file restaurants.json
mongoimport -d tymongo -c test --type csv --file database2.csv --headerline
答案 9 :(得分:1)
即使我想给我一个命令,也给出了答案的数量。我曾经经常。这可能对某人有帮助。
mongoimport original.json -d databaseName -c yourcollectionName --jsonArray --drop
答案 10 :(得分:1)
mongoimport --jsonArray --db dbname--collection collectionName--文件FilePath
示例 mongoimport --jsonArray --db learningmongo --collections-文件C:\ persons.json
答案 11 :(得分:1)
解决方案:-
mongoimport --db databaseName --collection tableName --file filepath.json
示例:-
将文件放在管理文件夹中:-
C:\Users\admin\tourdb\places.json
在您的终端上运行此命令:-
mongoimport --db tourdb --collection places --file ~/tourdb/places.json
输出:-
admin@admin-PC MINGW64 /
$ mongoimport --db tourdb --collection places --file ~/tourdb/places.json
2019-08-26T14:30:09.350+0530 connected to: localhost
2019-08-26T14:30:09.447+0530 imported 10 documents
更多link
答案 12 :(得分:1)
当具有usrname和密码的db时,这对我有用
mongoimport --db YOUR_DB --collection MyCollection --file /your_path/my_json_file.json -u my_user -p my_pass
没有用户名密码的数据库,请删除-u my_user -p my_pass
我的示例json
{
"_id" : ObjectId("5d11c815eb946a412ecd677d"),
"empid" : NumberInt(1),
"name" : "Rahul"
}
{
"_id" : ObjectId("5d11c815eb946a412ecd677e"),
"empid" : NumberInt(2),
"name" : "Rahul"
}
答案 13 :(得分:1)
在Windows中,您可以使用命令提示符pointer-events: none;
,在Ubuntu中,您可以通过输入以下命令来使用cmd
:
terminal
然后,当您打开mongo shell时,会发现在运行以下命令时检查您的database_name:
mongoimport -d your_database_name -c your_collection_name /path_to_json_file/json_file_name.json
答案 14 :(得分:0)
可能的答案有些迟了,可能会对新人有所帮助。如果您有多个数据库实例:
mongoimport --host <host_name>:<host_port> --db <database_name> --collection <collection_name> --file <path_to_dump_file> -u <my_user> -p <my_pass>
假定需要凭据,否则请删除此选项。
答案 15 :(得分:0)
我尝试了类似的方法,它确实有效:
mongoimport --db dbName --file D:\KKK\NNN\100YWeatherSmall.data.json
答案 16 :(得分:0)
这会起作用:
$ mongoimport --db databaseName --collection collectionName --file filePath/jsonFile.json
2021-01-09T11:13:57.410+0530 connected to: mongodb://localhost/ 2021-01-09T11:13:58.176+0530 1 document(s) imported successfully. 0 document(s) failed to import.
上面我分享了查询及其响应
答案 17 :(得分:0)
如果您尝试导出此测试集合:
> db.test.find()
{ "_id" : ObjectId("5131c2bbfcb94ddb2549d501"), "field" : "Sat Mar 02 2013 13:13:31 GMT+0400"}
{"_id" : ObjectId("5131c2d8fcb94ddb2549d502"), "field" : ISODate("2012-05-31T11:59:39Z")}
使用mongoexport(使用Date(...)
创建的第一个日期和使用new Date(...)
创建的第二个日期(如果使用ISODate(...)
将与第二行中相同))所以mongoexport输出将看起来像这样:
{ "_id" : { "$oid" : "5131c2bbfcb94ddb2549d501" }, "field" : "Sat Mar 02 2013 13:13:31 GMT+0400" }
{ "_id" : { "$oid" : "5131c2d8fcb94ddb2549d502" }, "field" : { "$date" : 1338465579000 } }
所以你应该使用相同的表示法,因为严格的JSON没有类型Date( <date> )
。
此外,您的JSON无效:所有字段名称必须用双引号括起来,但mongoimport在没有它们的情况下工作正常。
您可以在mongodb documentation和here中找到更多信息。
答案 18 :(得分:-2)
这应该在mongoshell中起作用
mongoimport -d databaseName -c collectionName --drop fileName.json
如果您没有在所需目录中启动该Shell,则必须指定该文件及其路径。