импортировать данные в openshift mongoDb - PullRequest
4 голосов
/ 19 марта 2012

Я создал java-приложение на openshift с картриджем mongoDb. Мое приложение работает нормально, как на jboss AS7, так и на openshift. Все идет нормально. Теперь я хотел бы импортировать CSV-файл в mongoDb в облаке openshift. Команда довольно проста:

mongoimport -d dbName -c collectionName --type csv data.csv --headerline

Это прекрасно работает локально, и я знаю, как подключиться к openshift-shell и удаленному mongo-db. Но мой вопрос: как я могу использовать локально сохраненный файл (data.csv) при выполнении этого коммандос в ssh-shell.

Я нашел это на форуме openshift, но я действительно не знаю, что это за каталог tmp и как его использовать. Я работаю на Windows, поэтому я использую Cygwin в качестве заменителя оболочки.

Спасибо за любую помощь

Ответы [ 6 ]

8 голосов
/ 19 марта 2012

Каталог tmp - это сокращение от /tmp. В Linux это каталог, который очищается всякий раз, когда вы перезагружаете компьютер, так что это хорошее место для временных файлов.

Итак, вы можете сделать что-то вроде:

$ rsync data.csv openshiftUsername@openshiftHostname:/tmp
$ ssh openshiftUsername@openshiftHostname
$ mongoimport -d dbName -c collectionName --type csv /tmp/data.csv --headerline
4 голосов
/ 07 октября 2014

Это то, что мне было нужно в октябре 2014 года:

mongoimport --host $OPENSHIFT_MONGODB_DB_HOST --port $OPENSHIFT_MONGODB_DB_PORT -u admin -p 123456789 -d dbName -c users /tmp/db.json

Обратите внимание, что я использовал файл json вместо csv

3 голосов
/ 14 июля 2012

При использовании Openshift вы должны использовать переменные окружения, чтобы ваши значения всегда были правильными.Нажмите здесь, чтобы узнать больше о переменных Openshift Envrionment

SSH на вашем сервере openshift, затем запустите (не забудьте изменить полужирные биты в команде, чтобы они соответствовали вашим значениям) :

mongoimport --headerline --type csv \
    --host $OPENSHIFT_NOSQL_DB_HOST \
    --port $OPENSHIFT_NOSQL_DB_PORT \
    --db **your db name** \
    --collection **your collection name** \
    --username $OPENSHIFT_NOSQL_DB_USERNAME \
    --password $OPENSHIFT_NOSQL_DB_PASSWORD \
    --file ~/**your app name**/data/**your csv file name**

ПРИМЕЧАНИЕ При импорте файлов CSV с использованием mongoimport данные сохраняются в виде строк и чисел * только 1014 * . не сохранит массивы или объекты.Если у вас есть массивы или объект, который вы хотите сохранить, вы должны сначала преобразовать ваш CSV-файл в правильный файл JSON, а затем монгоимпортировать файл JSON.

1 голос
/ 25 июля 2015

Пользователи, которые хотят использовать mongorestore, работали для меня:

Сначала скопируйте ваш дамп с помощью scp в каталог данных на openshift:

scp yourfile.bson yourhex@yourappname.rhcloud.com:app-root/data

rhc ssh в ваше приложение и перейдите в папку app-root/data.

mongorestore --host $OPENSHIFT_MONGODB_DB_HOST 
--port $OPENSHIFT_MONGODB_DB_PORT 
--username $OPENSHIFT_MONGODB_DB_USERNAME 
--password $OPENSHIFT_MONGODB_DB_PASSWORD 
-d yourdb 
-c yourcollection 
yourfilename.bson --drop
1 голос
/ 20 марта 2012

Я установил RockMongo на свой экземпляр openshift для управления mongodb. Это хороший пользовательский интерфейс, немного похожий на phpMyAdmin для mysql

0 голосов
/ 18 августа 2015

Аналогично ответу Саймона, но я импортировал .json в базу данных:

mongoimport --host $OPENSHIFT_MONGODB_DB_HOST -u admin -p 123456 --db dbname --collection grades < grades.json

...