我正在尝试按照本文http://zaiste.net/2012/08/importing_json_into_mongodb/中的步骤将名为breedData.json的文件导入mongodb。
所以我在app的根文件夹中输入以下命令。 breedData.json文件也位于app根文件夹中。 Mongod和nodemon正在运行。
#!/usr/bin/perl
use strict;
use warnings;
use Cwd;
my $dir = getcwd;
my $count = 0;
opendir(my $dh, $dir) or die "$0: $dir: $!\n";
while (my $file = readdir($dh)) {
# We only want files
next unless (-f "$dir/$file");
# Use a regular expression to find files ending in .txt
next unless ($file =~ m/\.html$/);
print "$file\n";
$count = $count + 1;
}
closedir($dh);
print "There are $count files in this directory.";
exit 0;
我得到了这个:
mongoimport --db shelterdoggie --collection breeds --type json --file breedData.json --jsonArray
我用jsonlint.com检查了我的文件,它是有效的json。
我已尝试将此json格式与上述终端命令一起使用:
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
我也尝试过这种格式,同时在上面的命令中省略了--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"}
]
然后我收到了这个错误:
{"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"}
我已经检查了文件,有152个{和s}和152}我的文件中有152行/文件,所以它不应该是因为某个地方有一个未闭合的花括号。我不明白为什么这不起作用。如果您有任何建议,我会很感激。
这是我的.json文件中的一个完整行,以防它有用:
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
答案 0 :(得分:3)
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
不确定是否有其他方法可以在没有完整文件路径的情况下执行此操作(正如我的初始问题中的文章所示),但至少我可以导入我的数据。
答案 1 :(得分:1)
在Windows上有类似的问题,因此通过stdin示例
传递数据来修复它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