我使用mongoDb盒在openshift上创建了一个java应用程序。 我的应用程序运行正常,在本地jboss AS7和openshift一样。 到现在为止还挺好。 现在我想将一个csv导入到openshift云上的mongoDb中。 命令很简单:
mongoimport -d dbName -c collectionName --type csv data.csv --headerline
这在本地工作正常,我知道如何连接到openshift-shell和远程mongo-db。但我的问题是:在ssh-shell中执行此命令时,如何使用本地存储的文件(data.csv)。
我在openshift论坛上找到this,但我不知道这个tmp目录是什么以及如何使用它。 我在windows上工作,所以我使用Cygwin作为shell替代品。
感谢您的帮助
答案 0 :(得分:8)
tmp目录是/tmp
的简写。在Linux上,它是一个在重新启动计算机时被清除的目录,因此它是临时文件的好地方。
所以,你可以这样做:
$ rsync data.csv openshiftUsername@openshiftHostname:/tmp
$ ssh openshiftUsername@openshiftHostname
$ mongoimport -d dbName -c collectionName --type csv /tmp/data.csv --headerline
答案 1 :(得分:4)
这是我在2014年10月所需要的:
mongoimport --host $OPENSHIFT_MONGODB_DB_HOST --port $OPENSHIFT_MONGODB_DB_PORT -u admin -p 123456789 -d dbName -c users /tmp/db.json
请注意,我使用的是json文件而不是csv
答案 2 :(得分:3)
使用Openshift时,必须使用环境变量来确保您的值始终正确。点击此处阅读有关Openshift Envrionment variables
的更多信息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**
注意强> 使用mongoimport导入csv文件时,数据将保存为字符串,数字仅。它将不保存数组或对象。如果要保存数组或对象,则必须先将csv文件转换为正确的json文件,然后再将mongomport转换为json文件。
答案 3 :(得分:1)
我在我的openshift实例上安装了RockMongo来管理mongodb。 这是一个很好的用户界面,有点像phpMyAdmin for mysql
答案 4 :(得分:1)
希望使用以下mongorestore
的用户为我工作:
首先使用scp将转储复制到openshift上的数据目录:
scp yourfile.bson yourhex@yourappname.rhcloud.com:app-root/data
rhc ssh到你的应用程序并cd到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
答案 5 :(得分:0)
与Simon的答案类似,但这是我将.json
导入数据库的方式:
mongoimport --host $OPENSHIFT_MONGODB_DB_HOST -u admin -p 123456 --db dbname --collection grades < grades.json