我正在尝试按照本文http://zaiste.net/2012/08/importing_json_into_mongodb/中的步骤将一个名为breedData.json的文件导入mongodb。
因此,我在终端中从我的应用程序的根文件夹中输入以下命令。breedData.json文件也在应用程序根文件夹中。魔神和诺德蒙在跑。
mongoimport --db shelterdoggie --collection breeds --type json --file breedData.json --jsonArray
我得到了这个:
2015-09-07T00:58:18.646-0700 connected to: localhost
2015-09-07T00:58:18.647-0700 Failed: error reading separator after document #2: bad JSON array format - found '{' outside JSON object/array in input source
2015-09-07T00:58:18.647-0700 imported 0 documents
我已经用jsonlint.com检查了我的文件,它是有效的json。
我已经尝试在上面的终端命令中使用这个json格式:
[
{"malehw":"Ht: 9-11.5, Wt: 7-9","femalehw":"Ht: 9-11.5, Wt: 7-9"},
{"malehw":"Ht: 27, Wt: 60","femalehw":"Ht: 25, Wt: 50"},
{"malehw":"Ht: 23, Wt: 45","femalehw":"Ht: <23, Wt: 45"}
]
我也尝试过这种格式,同时在上面的命令中去掉了--jsonArray标志:
{"malehw":"Ht: 9-11.5, Wt: 7-9","femalehw":"Ht: 9-11.5, Wt: 7-9"}
{"malehw":"Ht: 27, Wt: 60","femalehw":"Ht: 25, Wt: 50"}
{"malehw":"Ht: 23, Wt: 45","femalehw":"Ht: <23, Wt: 45"}
但是我得到了这个错误:
2015-09-07T01:11:00.034-0700 connected to: localhost
2015-09-07T01:11:00.035-0700 Failed: error processing document #1: invalid character '{' after array element
2015-09-07T01:11:00.035-0700 imported 0 documents
我已经检查了文件,有152个{和152 },我的文件中有152行/文档,所以它不应该是由于某个地方的未闭合大括号造成的。我不明白为什么这不起作用。如果你有任何建议,我将不胜感激。
下面是我的.json文件中的一整行,如果它有帮助的话:
{"malehw":"Ht: 24-26, Wt: 75-95","femalehw":"Ht: 22-24, Wt: 75-95","catfriendly":"••••","easytraining":"••••••","watchdog":"••••••","grooming":"•••","coldtolerant":"••••","care":"Among the most intelligent of breeds, the German Shepherd Dog is so intent on his mission whatever that may be and he is virtually unsurpassed in working versatility. He is utterly devoted and faithful. He is usually good with other pets.","breed":"German Shepherd Dog","health":"This breed needs daily mental and physical challenges. He enjoys a good exercise session as well as learning session. He is family-oriented and does well as a house dog. His coat needs brushing one or two times weekly.","energy":"••••","playfulness":"•••","dogfriendly":"••","strangerfriendly":"•••","protection":"••••••","heattolerant":"••••","exercise":"•••••","affection":"••••","index":67,"url":"https://www.petfinder.com/dog-breeds/German-Shepherd-Dog"}
发布于 2015-09-09 06:18:46
克莱门特的建议让我走上了正确的道路。将文件的完整文件路径放入工作。终端中的导入命令如下所示:
mongoimport --db shelterdoggie --collection breeds --type json --file ~/dev/shelter_doggie/breedData.json --jsonArray
至于我的csv导入尝试,我在db之前只有一个破折号,而不是两个破折号。我修复了这个问题,并为csv文件添加了完整的文件路径。因此,当我像这样运行命令时,它可以工作:
mongoimport --db shelterdoggie --collection breeds --type csv --file ~/dev/shelter_doggie/kimonoData.csv --headerline
我不确定是否有其他方法可以在没有完整文件路径的情况下做到这一点(正如我最初问题中的文章所指出的),但至少我可以导入我的数据。
发布于 2016-12-21 14:11:34
我在Windows上遇到了类似的问题,因此通过通过标准输入示例传递数据修复了这个问题
cat "PATH\breedData.json" | mongoimport.exe --db shelterdoggie --collection breeds --type json --file --jsonArray
或在Linux上
mongoimport --db shelterdoggie --collection breeds --type json --file --jsonArray < breedData.json
https://stackoverflow.com/questions/32434097
复制相似问题