Mongoimport的json文件

amb*_*478 158 import json mongodb mongoimport

我有一个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"}},
Run Code Online (Sandbox Code Playgroud)

每条记录都位于JSON文件的一行中,唯一的换行符位于每条记录的末尾.因此,文档中的每一行都以"{jobID:"开头......我试图使用以下命令将这些行导入mongo数据库:

mongoimport --db dbName --collection collectionName --file fileName.json
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

我不知道问题是什么.有人可以推荐解决方案吗?

amb*_*478 280

我能够使用以下查询修复错误:

mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助.

  • `--jsonArray`是票,是吗? (25认同)
  • 这个`mongoimport -d <database> -c <collection> --jsonArray -f <filename> .json`的缩写形式. (4认同)
  • 有时需要用户名/密码`mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password` (2认同)

Sri*_*a N 58

试试这个,

mongoimport --db dbName --collection collectionName <fileName.json
Run Code Online (Sandbox Code Playgroud)

例,

mongoimport --db foo --collection myCollections < /Users/file.json
connected to: *.*.*.*
Sat Mar  2 15:01:08 imported 11 objects
Run Code Online (Sandbox Code Playgroud)

问题是因为你的日期格式.

我使用了相同的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"}}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


KAR*_*N.A 20

使用mongoimport你可以实现相同的目标

mongoimport --db test --collection user --drop --file ~/downloads/user.json
Run Code Online (Sandbox Code Playgroud)

哪里,

test - Database name
user - collection name
user.json - dataset file
Run Code Online (Sandbox Code Playgroud)

--drop 如果已经存在,则删除该集合.


And*_*rey 19

安慰:

mongoimport -d dbName -c collectionName dataFile.js 
Run Code Online (Sandbox Code Playgroud)


小智 6

您的语法在以下方面完全正确:

mongoimport --db dbName --collection collectionName --file fileName.json
Run Code Online (Sandbox Code Playgroud)

确保您位于正确的文件夹中或提供完整路径.


Rav*_*ani 5

我已经使用以下命令导出数据库

mongodump --db database_name --collection collection_name
Run Code Online (Sandbox Code Playgroud)

和下面的命令对我来说导入数据库

mongorestore --db database_name path_to_bson_file
Run Code Online (Sandbox Code Playgroud)


Ami*_*mar 5

在 MongoDB 中导入 JSON/CSV 文件

  • 等等
  • 首先检查 bin 文件夹(C:\Program Files\MongoDB\Server\4.4\bin)中的 mongoimport.exe 文件,如果不是,则下载 mongodb 数据库工具(https://www.mongodb.com/try/download/database -工具
  • 将提取(解压)的文件(在解压的 bin 内)复制到 bin 文件夹(C:\Program Files\MongoDB\Server\4.4\bin)
  • 将 json 文件复制到 bin 文件夹(C:\Program Files\MongoDB\Server\4.4\bin)
  • 现在打开你的commond提示将其目录更改为bin
cd "C:\Program Files\MongoDB\Server\4.4\bin"
Run Code Online (Sandbox Code Playgroud)
  • 现在将其复制到您的命令提示符上
mongoimport -d tymongo -c test --type json --file restaurants.json
Run Code Online (Sandbox Code Playgroud)
  • 其中 d- 数据库(tymongo-数据库名称),c-集合(测试集合名称)

对于 CSV 文件

 mongoimport -d tymongo -c test --type csv --file database2.csv --headerline
Run Code Online (Sandbox Code Playgroud)