JSON文件的蒙古导入

我有一个由大约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

我不知道有什么问题。有人能推荐一个解决方案吗?

377597 次浏览

试试这个,

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"}}

希望这能有所帮助

如果你试图导出这个测试集合:

> 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 文档在这里中找到更多信息。

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

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

希望这对大家有所帮助。

你的语法在以下情况下完全正确:

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

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

该命令适用于没有指定集合的情况。

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

控制台:

mongoimport -d dbName -c collectionName dataFile.js

我已经使用下面的命令导出DB

mongodump --db database_name --collection collection_name

和下面的命令为我工作导入DB

mongorestore --db database_name path_to_bson_file

使用mongoimport你可以实现同样的效果

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

在那里,

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

--drop是删除已经存在的集合。

在另一台终端上执行import命令。(不在芒果壳里)

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

我尝试过这样的方法,而且确实有效:

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

在windows中,你可以使用你的命令提示符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

当使用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"
}

解决方案:

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

获取更多链接

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

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

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

  1. 只需复制json文件的路径,例如“C:\persons.json”
  2. 请登录C:\Program Files\MongoDB\Server\4.2\bin
  3. 在mongodb bin文件夹上打开CMD并运行此命令

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

例子mongodb import—jsonArray—db learnmongo—收集人员—文件C:\persons.json

虽然我想给我的命令,但已经给出了一些答案。我过去经常去。它可能对某人有帮助。

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

这是可行的:

$  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.

上面我分享了这个问题及其回答

在MongoDB中导入JSON/CSV文件

  • 等待等待
  • 首先检查bin文件夹中的mongoimport.exe文件(C:\Program Files\MongoDB\Server\4.4\bin),如果没有,则下载MongoDB数据库工具(https://www.mongodb.com/try/download/database-tools)
  • 将解压(unzip)文件(在unzip bin内)复制到bin文件夹(C:\Program files \MongoDB\Server\4.4\bin)
  • 将json文件复制到bin文件夹(C:\Program Files\MongoDB\Server\4.4\bin)
  • 现在打开命令提示符,将其目录更改为bin
cd "C:\Program Files\MongoDB\Server\4.4\bin"
  • 现在在命令提示符上复制这个
mongoimport -d tymongo -c test --type json --file restaurants.json
  • 其中d- database(tymongo-database名称),c-collection(test-collection名称)

CSV文件

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

mongoimport - d <- c & lt; collectio_name>——文件 & lt; c: \ \ test.json用户>jsonArray——