Хобрук: Ваш путь к мастерству в программировании

mongoimport пропускает первую строку

Я столкнулся с некоторым странным поведением при использовании mongoimport. Кажется, он пропускает первую строку файла импорта JSON. Я не видел никаких упоминаний о заголовках для JSON, и вставка пустой первой строки по-прежнему приводит к той же проблеме.

Я использую CentOS, а MongoImport и БД версии 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 в первую строку {} приводит к тому, что mongoimport говорит imported 4, но дает правильные выходные данные.

Обновление: когда я попытался указать базу данных с помощью mongoimport -d ntcir вместо того, чтобы оставить значение по умолчанию test, данные импортировались правильно. Это ожидаемое поведение?

29.11.2011

Ответы:


1

попытался воспроизвести на моем ящике, скопируйте текст в файл с кодировкой UTF-8, запустите команду импорта, и это удалось...

разница заключалась в том, что я должен указать -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
29.11.2011

2

Я также проверил, что он работает правильно для меня. Это должно быть связано с кодировкой файлов и, возможно, с Windows. Как вы создали текстовый файл?

Если вы могли бы, попробуйте эти инструкции для создания файла UTF-8 в Windows, чтобы мы могли быть уверены, что это не проблема с кодировкой:

Вы можете сохранить файл с помощью Блокнота (иногда называемого «Редактор») в кодировке UTF-8, но не в Wordpad.

  1. Открыть Блокнот
  2. Вставить текст в новый файл
  3. Файл - Сохранить как -> там вы видите 3 поля, для последнего из которых под названием «кодировка» установлено значение: UTF-8.

Пожалуйста, дайте мне знать, если это сработает.

29.11.2011
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..