将数据导入到OpenShift的MongoDB中。

5

我在OpenShift上使用mongoDb cartridge创建了一个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 论坛上找到了这个,但我不知道 tmp 目录是什么以及如何使用它。我在 Windows 上工作,因此我使用 Cygwin 作为 shell 替代品。
谢谢任何帮助。
6个回答

8

临时目录是“/tmp”的简写。在Linux系统中,每次重启计算机时都会清除该目录中的内容,因此它是存放临时文件的好地方。

因此,您可以执行以下操作:

$ rsync data.csv openshiftUsername@openshiftHostname:/tmp
$ ssh openshiftUsername@openshiftHostname
$ mongoimport -d dbName -c collectionName --type csv /tmp/data.csv --headerline

谢谢Kristina。我安装了rockMongo来管理mongo实例,它还提供了一些导入工具。 - thomash
1
我建议使用scp而不是rsync。您还需要在mongoimport命令上指定--host。使用环境变量--host $OPENSHIFT_NOSQL_DB_HOST。您可能还需要使用MOngo实例上管理员帐户的用户名和密码。当我今晚执行该命令时,它看起来像这样: mongoimport -d tbird -c parks --type json --file tbird/tmp/parkcoord.json -h $OPENSHIFT_NOSQL_DB_HOST -u admin -p XXXXXXXXX - TheSteve0
1
从2013年12月21日开始,您必须使用$OPENSHIFT_MONGODB_DB_HOST而不是$OPENSHIFT_NOSQL_DB_HOST。 - netimen

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文件。


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文件,然后再使用mongoimport导入JSON文件。

1
我在我的openshift实例上安装了RockMongo来管理mongodb。这是一个很好的用户界面,有点像mysql的phpMyAdmin。

如果你在RockMongo中成功导入,请告诉我。我今晚尝试了一下,但没有成功。我按照上面给出的scp、ssh、mongoimport路线进行操作。不过我使用的是JSON文件而不是CSV。 - TheSteve0
抱歉回复晚了。RockMongo中的导入功能也没有帮到我。最终我将.csv文件转换为json格式,并使用mongoimport进行导入,成功了。 - thomash

1

如果用户想要使用 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

非常感谢您的分享! - digita1-anal0g
@digita1-anal0g - 很高兴它对你有用 :) - Neil

0

与Simon的答案类似,但这是我将.json导入数据库的方法:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接