mongoimport跳过第一线

时间:2011-11-29 02:20:32

标签: json mongodb nosql

使用mongoimport时,我遇到了一些奇怪的行为。它似乎正在跳过JSON导入文件的第一行。我没有看到任何JSON标题的提及,插入空白的第一行仍然会导致同样的问题。

我正在运行CentOS,MongoImport和DB是版本2.0.0

我要导入的数据包含日文字符。它有点长,但这里是我尝试导入的3行。我希望可以在这里发帖,以防数据本身存在导致错误的问题。

{ "NICT-ATR" : { "A" : { "adequacy" : 3, "fluency" : 4 }, "B" : { "adequacy" : 3, "fluency" : 3 }, "C" : { "adequacy" : 4, "fluency" : 2 }, "output" : "図12を参照して、本発明の第三実施例に説明説明次に、。" }, "NTT" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "次に、 図 12 を参照して、 本発明の第 3 の実施例について説明する。" }, "_id" : { "$oid" : "4ed3428a7f7130fdf093a41d" }, "english" : "Next, explanation will be given on a third embodiment of the present invention, by referring to FIG. 12.", "id" : "20000523-155948-EMBODIMENTS-73", "kuro" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "次に、本発明の第3の実施例について12図である参照して説明する。" }, "moses" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "次に 、 図 12 を 参照 し て 、 本 発明 の 第 3 実施 例 について 説明 する 。 " }, "ref" : "次に、本発明の第3実施例を図12用いて説明する。", "tsbmt" : { "A" : { "adequacy" : 4, "fluency" : 4 }, "B" : { "adequacy" : 4, "fluency" : 3 }, "C" : { "adequacy" : 4, "fluency" : 4 }, "output" : "次に、説明は図12の参照から本発明の3番めの実施例上で与えられるだろう。" } }
{ "NICT-ATR" : { "A" : { "adequacy" : 4, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 4 }, "C" : { "adequacy" : 4, "fluency" : 3 }, "output" : "印字機構は、感光体ドラム11が設けられている。" }, "NTT" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "プリント機構は、 感光体ドラム 11 を備えている。" }, "_id" : { "$oid" : "4ed3428b7f7130fdf093a819" }, "english" : "The printing mechanism comprises the photosensitive drum 11.", "id" : "19990621-173924-EMBODIMENTS-11", "kuro" : { "A" : { "adequacy" : 4, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 4 }, "C" : { "adequacy" : 1, "fluency" : 2 }, "output" : "印刷機構は、感光体ドラム11配置構成されている。" }, "moses" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "プリント 機構 は 、 感光 体 ドラム 11 を 備え て いる 。 " }, "ref" : "プリント機構は、感光体ドラム11を備えている。", "tsbmt" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 4, "fluency" : 3 }, "output" : "印字機構は感光性のドラム11を含む。" } }
{ "NICT-ATR" : { "A" : { "adequacy" : 4, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 4 }, "C" : { "adequacy" : 4, "fluency" : 3 }, "output" : "図25は、インデックスコーナー。" }, "NTT" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 4 }, "output" : "インデックスコーナを図 25 に示す。" }, "_id" : { "$oid" : "4ed3428b7f7130fdf093a6c9" }, "english" : "FIG. 25 shows the index corner.", "id" : "19990630-184545-EMBODIMENTS-234", "kuro" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 3 }, "output" : "インデックスコーナー図25示す。" }, "moses" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "インデックス コーナ 部 を 図 25 に 示す 。 " }, "ref" : "図25に、インデックスコーナーを示している。", "tsbmt" : { "A" : { "adequacy" : 5, "fluency" : 5 }, "B" : { "adequacy" : 5, "fluency" : 5 }, "C" : { "adequacy" : 5, "fluency" : 5 }, "output" : "図25はインデックス・コーナーを示す。" } }

第一行永远不会导入。我尝试改变顺序,在标题中插入一个空白行,它始终是第一行。

更令人困惑的是,mongoimport声称它正常工作,说它导入了3个对象:

$ ./mongoimport --file ~/ribes/ntcir-min.json -c ej --drop
connected to: 127.0.0.1
dropping: test.ej
imported 3 objects

然后检查集合中的数据只返回2个结果:

$ ./mongo
MongoDB shell version: 2.0.0
connecting to: test
> db
test
> db.ej.count()
2

有没有人对这可能有什么想法?

更新:将空JSON对象添加到第一行{}会使mongoimportimported 4,但会提供正确的输出数据。

更新:当我尝试使用mongoimport -d ntcir指定数据库而不是将其保留为默认test时,数据导入正确。这是预期的行为吗?

2 个答案:

答案 0 :(得分:0)

试图在我的盒子上重现 将文本复制到UTF-8编码的文件中 运行import命令 它成功了......

不同之处在于我必须指定-h因为我的环境无法识别默认值(127.0.0.1)......

c:\Servers\Mongo\bin>mongoimport.exe --file d:\imp.json -h localhost -c ej --drop
connected to: localhost
dropping: test.ej
imported 3 objects

c:\Servers\Mongo\bin>mongo.exe
MongoDB shell version: 2.0.1
connecting to: test
> db.version()
2.0.1
> db
test
> db.ej.count()
3

答案 1 :(得分:0)

我还验证了它对我来说是否正常。它必须与文件编码有关,也许与Windows有关。你是如何创建文本文件的?

如果可以,请尝试使用这些说明在Windows中创建UTF-8文件,这样我们就可以确定它不是编码问题:

  

您可以使用记事本(有时称为“编辑器”)将文件保存为UTF-8,但不能使用Wordpad保存。

  1. 打开记事本
  2. 将文字粘贴到新文件
  3. 文件 - 另存为 - >在那里你看到3个字段将最后一个名为“encoding”的字段设置为:UTF-8
  4. 如果有诀窍,请告诉我。