JSON文件的mongoimport

Posted

技术标签:

【中文标题】JSON文件的mongoimport【英文标题】:Mongoimport of JSON file 【发布时间】:2013-02-16 18:34:40 【问题描述】:

我有一个包含大约 2000 条记录的 JSON 文件。将对应于 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

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

【问题讨论】:

【参考方案1】:

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

mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray

希望这对某人有所帮助。

【讨论】:

--jsonArray 是票,是吗? 这个mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json的缩写。 有时需要用户名/密码mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password 添加到@DiegoAndrésDíazEspinoza 评论,在我的情况下,我收到了“无法使用机制'SCRAM-SHA-1'进行身份验证”的错误。所以,经过搜索,我发现它缺少了答案***.com/a/58067928/6791222中提到的关键字authenticationDatabase 对于未来的搜索者,您可能仍需要安装 mongoimport:docs.mongodb.com/database-tools/installation/installation【参考方案2】:

试试这个,

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"

希望对你有帮助

【讨论】:

我遇到了与问题相同的错误...是否检查了此导入? 我按照您的建议调整了日期,并且确实消除了该特定错误。但是,现在我得到了一个新的。这是新的错误: 您能粘贴新的 JSON 以及您使用的是哪个版本的 Mongo 吗? 我能够通过在查询末尾添加 --jsonArray 来修复错误。 需要在.json 周围使用"",如果它包含文件夹名称中有空格。 Answered by Abhi below 例如这个不行,需要在json文件位置添加""才能导入。 D:\&gt;mongoimport --db testimport --collection small_zip &lt; D:\Dev\test test\small_zips.json The system cannot find the file specified. 这个行 D:\&gt;mongoimport --db testimport --collection small_zip &lt; "D:\Dev\test test\small_zips.json" 2016-04-17T18:32:34.328+0800 connected to: localhost 2016-04-17T18:32:34.610+0800 imported 200 documents【参考方案3】:

使用 mongoimport 你可以达到同样的效果

mongoimport --db test --collection user --drop --file ~/downloads/user.json

在哪里,

test - Database name
user - collection name
user.json - dataset file

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

【讨论】:

【参考方案4】:

控制台:

mongoimport -d dbName -c collectionName dataFile.js 

【讨论】:

【参考方案5】:

我使用下面的命令导出数据库

mongodump --db database_name --collection collection_name

下面的命令对我有用,可以导入数据库

mongorestore --db database_name path_to_bson_file

【讨论】:

【参考方案6】:

你的语法看起来完全正确:

mongoimport --db dbName --collection collectionName --file fileName.json

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

【讨论】:

【参考方案7】:

在另一个终端中运行导入命令。 (不在 mongo shell 内。)

mongoimport --db test --collection user --drop --file ~/downloads/user.json

【讨论】:

【参考方案8】:

在 Windows 中,您可以使用 Command Prompcmd cmd,在 Ubuntu 中,您可以通过键入以下命令来使用您的 terminal

mongoimport  -d  your_database_name  -c  your_collection_name  /path_to_json_file/json_file_name.json

然后当你打开你的 mongo shell 时,你会发现在运行这个命令时检查你的 database_name:

show databases

【讨论】:

【参考方案9】:

在 MongoDB 中导入 JSON/CSV 文件

等一下 首先检查你的bin文件夹(C:\Program Files\MongoDB\Server\4.4\bin)中的mongoimport.exe文件,如果不是然后下载mongodb数据库工具(https://www.mongodb.com/try/download/database-tools) 将提取(解压缩)文件(在解压后的 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"
现在将其复制到您的命令提示符中
mongoimport -d tymongo -c test --type json --file restaurants.json
其中d-数据库(tymongo-数据库名称),c-collection(测试-集合名称)

用于 CSV 文件

 mongoimport -d tymongo -c test --type csv --file database2.csv --headerline

【讨论】:

【参考方案10】:

此命令适用于未指定集合的​​情况。

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

【讨论】:

【参考方案11】:

解决方案:-

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】:

我试过这样的方法,它确实有效:

mongoimport --db dbName --file D:\KKK\NNN\100YWeatherSmall.data.json

【讨论】:

【参考方案13】:

当 db 使用 usrname 和密码时,这对我有用

mongoimport --db YOUR_DB --collection MyCollection --file /your_path/my_json_file.json -u my_user -p my_pass

没有用户名密码的db请删除-u my_user -p my_pass

我的示例 json

 
    "_id" : ObjectId("5d11c815eb946a412ecd677d"), 
    "empid" : NumberInt(1), 
    "name" : "Rahul"

 
    "_id" : ObjectId("5d11c815eb946a412ecd677e"), 
    "empid" : NumberInt(2), 
    "name" : "Rahul"

【讨论】:

【参考方案14】:
    只需复制 json 文件的路径,例如 "C:\persons.json" 转到 C:\Program Files\MongoDB\Server\4.2\bin 在该 mongodb bin 文件夹上打开 cmd 并运行此命令

mongoimport --jsonArray --db dbname--collection collectionName--file FilePath

示例 mongoimport --jsonArray --db learnmongo --collection people --file C:\persons.json

【讨论】:

【参考方案15】:

尽管我想给我的命令,但已经给出了答案的数量。我以前经常。它可能对某人有所帮助。

mongoimport original.json -d databaseName -c yourcollectionName --jsonArray --drop

【讨论】:

【参考方案16】:

如果您尝试导出此测试集合:

> 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( &lt;date&gt; )

您的 JSON 也无效:所有字段名称必须用双引号括起来,但没有它们 mongoimport 也可以正常工作。

您可以在 mongodb documentation 和 here 中找到更多信息。

【讨论】:

我按照您的建议调整了日期,并且确实消除了该特定错误。然而,现在我得到了一个新的。这是新错误:' Sat Mar 2 15:22:07 异常:提供的 JSON 的 BSON 表示太大:解析 JSON 字符串附近失败:数据:“1949 Sat Mar 2 15:22:07 Sat Mar 2 15:22 :07 导入 0 个对象 Sat Mar 2 15:22:07 错误:遇到 34763 错误' 我认为这是sizeT:data: "1949..."字段的另一个错误【参考方案17】:

可能的答案有点晚,可能会帮助新人。如果您有多个数据库实例:

mongoimport --host <host_name>:<host_port> --db <database_name> --collection <collection_name>  --file <path_to_dump_file> -u <my_user> -p <my_pass>

假设需要凭据,否则删除此选项。

【讨论】:

【参考方案18】:

这将起作用:

$ mongoimport --db databaseName --collection collectionName --file filePath/jsonFile.json 2021-01-09T11:13:57.410+0530 连接到:mongodb://localhost/ 2021-01-09T11:13:58.176+0530 1 个文档导入成功。 0 个文档无法导入。

上面我分享了查询及其响应

【讨论】:

【参考方案19】:

mongoimport -d dbname> -c collectio_name> --file c:\users\test.json> --jsonArray

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于JSON文件的mongoimport的主要内容,如果未能解决你的问题,请参考以下文章

js 读取 json文件

cocos修改json文件

教你一招:让你的json文件更好看

php,JavaScript 如何读取并修改json文件?

如何使用 json 模式文件测试 json 文件

GoLang -- json文件操作