Ama*_*nda 3 json mongodb mongoimport
我正在尝试按照本文http://zaiste.net/2012/08/importing_json_into_mongodb/ 中的步骤将一个名为breedData.json 的文件导入mongodb 。
所以我从我的应用程序的根文件夹在终端中输入下面的命令。品种数据.json 文件也在应用程序根文件夹中。Mongod 和 nodemon 正在运行。
mongoimport --db shelterdoggie --collection breeds --type json --file breedData.json --jsonArray
Run Code Online (Sandbox Code Playgroud)
我明白了:
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
Run Code Online (Sandbox Code Playgroud)
我已经用 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"}
]
Run Code Online (Sandbox Code Playgroud)
我也尝试过这种格式,同时在上面的命令中去掉了 --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"}
Run Code Online (Sandbox Code Playgroud)
但后来我收到了这个错误:
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
Run Code Online (Sandbox Code Playgroud)
我检查了文件,有 152 个 {'s 和 152}'s,我的文件中有 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"}
Run Code Online (Sandbox Code Playgroud)
克莱门特的建议让我走上了正轨。放置文件的完整文件路径有效。终端中的导入命令如下所示:
mongoimport --db shelterdoggie --collection breeds --type json --file ~/dev/shelter_doggie/breedData.json --jsonArray
Run Code Online (Sandbox Code Playgroud)
至于我的 csv 导入尝试,我在 db 之前只有一个破折号而不是两个破折号。我修复了这个问题并添加了 csv 文件的完整文件路径。所以当我像这样运行命令时它可以工作:
mongoimport --db shelterdoggie --collection breeds --type csv --file ~/dev/shelter_doggie/kimonoData.csv --headerline
Run Code Online (Sandbox Code Playgroud)
不确定是否有另一种方法可以在没有完整文件路径的情况下执行此操作(如我最初问题中的文章所示),但至少我可以导入我的数据。