Как использовать mongoimport с моей базой данных метеоритов?

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

Я узнал, как запустить оболочку mongo для моего приложения meteor (meteor mongo), но я не могу запустить mongoimport из оболочки.

В документах mongodb для mongoimport говорится

В этом примере mongoimport импортирует данные в формате csv в файле /opt/backups/contacts.csv в контакты коллекции в базе данных пользователей на экземпляре MongoDB, работающем на локальном хосте с номером 27017.

mongoimport --db users --collection contacts --type csv --file/opt/backups/contacts.csv

Но когда я запустил mongod, запустил приложение meteor и запустил mongoimport, он импортирует в мою базу данных test, а не мою базу данных приложений.

Я прочитал этот комментарий postoverflow для postoverflow:

Используйте mongoexport, чтобы сбрасывать ваши коллекции по отдельности, затем mongoimport, чтобы импортировать файлы в db с именем meteor в экземпляре meteor mongodb. Экземпляр meteor mongo работает на порту 3002 с bind_address 127.0.0.1, а файлы данных находятся в подкаталоге проекта meteor.meteor/local/db

Но я не понимаю, как подключиться к этому экземпляру или как настроить его с помощью команды mongoimport.

Ответы

Ответ 1

Похоже, я просто ответил на ваш комментарий в Rahuls замечательный ответ. В любом случае загрузите mongodb из mongodb.org для вашей ОС (или менеджера пакетов, например macports), и используйте инструмент, указанный в папке bin. mongoimport не является командой в оболочке mongo, это исполняемый файл, который запускается отдельно.

Также не забудьте поставить порт (обычно 3001, если вы используете экземпляр метеор в 3000), также db обычно является метеором, а не пользователями, когда вы запускаете его

mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv

Ответ 2

ПРИМЕЧАНИЕ. Вышеуказанный метод НЕ работал на порт 3002 для меня, но он работает на порт 3001.

Чтобы импортировать внешний TSV файл в meteor db, я запустил приложение метеоритов, в котором вам нужны данные TSV. Это также запускает службу meteor mongodb (в моем случае на host: localhost: 3001), затем я открыл терминал в OSX и через терминал, перешел в папку bin bin пакета mongodb, которую я загрузил ранее, чтобы получить двоичный код, "mongoimport". Однажды в папке bin пакета mongodb, затем в командной строке я набрал следующее ниже (некоторые параметры переключателя будут меняться... но --host, --localhost и -db switch/values ​​должны быть как показано):

$  ./mongoimport --host localhost:3001 --db meteor --collection datarefs --type tsv --drop --headerline --file /PathToFile/DataRefs.tsv

После входа в команду mongoimport echo'd успешно импортирует в терминал. Как только это будет сделано, я смогу перейти к приложению метеорита через терминал и запустить метеоритный монго: $meteor mongo.... и посмотреть импортированную коллекцию "datarefs" в meteor db для этого приложения.

$  meteor mongo
...
...
meteor:PRIMARY> show collections
datarefs
system.indexes
meteor:PRIMARY>

Ответ 3

Сначала создайте коллекцию в приложении meteor, как это

Students = new Meteor.Collection("students");

Затем добавьте некоторое фиктивное значение, чтобы убедиться в инициализации коллекции метеоров

Students.insert({"name":"first"}); Например, в некоторых событиях с кликом. Чтобы проверить использование этого

meteor:PRIMARY> show collections students system.indexes

Затем импортируйте.  mongoimport -h localhost:3001 -d meteor -c students < students.json Как-то метеор не признает новые импортированные коллекции, вам нужно либо удалить все из них, либо добавить фиктивное значение, либо снова импортировать, либо создать новый, и инициализировать его с помощью фиктивного значения, а затем импортировать. Возможно, это ошибка привязки, потому что коллекции отображаются справа в minimongo.

Спасибо Акшату и Тому Кайлеру

Ответ 4

Небольшой script (шаблон) для запуска mongoimport на xxx.meteor.com

    #!/bin/sh

    # Script to import csvfile to meteor application deployed to free meteor.com hosting.
    # Make sure your versions of mongo match with the metor.com mongo versions. 
    # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12.

    if [ $# -eq 0 ]
      then
        echo "usage: $0 xxx.meteor.com collection filename.csv"
        exit 1
    fi

    URL=$1
    COLLECTION=$2
    FILE=$3

    echo Connecting to $URL, please stand by.... collection=$COLLECTION file=$FILE

    PUPMS=`meteor mongo --url $URL | sed 's/mongodb:\/\// -u /' | sed 's/:/ -p /' | sed 's/@/ -h /'  | sed 's/\// -d /'`



    mongoimport -v $PUPMS --type csv --headerline --collection $COLLECTION  --file $FILE

Ответ 5

Теперь я использую mongochef для перемещения данных между базами данных. Это очень просто - вы просто подключаетесь к каждой базе данных (обычно локальной и удаленной db), тогда вы можете копировать и вставлять документы в коллекции. Гораздо проще, чем в командной строке.