2012-03-18 63 views
4

我使用mongoDb盒式磁帶在openshift上創建了一個Java應用程序。 我的應用程序運行良好,本地在jboss AS7上就像在openshift上一樣。 目前爲止這麼好。 現在我想將csv導入到openshift雲中的mongoDb中。 的命令是相當簡單:將數據導入openshift mongoDb

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

這個地方工作得很好,我知道如何連接到openshift殼和遠程蒙戈-DB。但我的問題是:如何在ssh-shell中執行此命令行時使用本地存儲的文件(data.csv)。

我在openshift論壇上發現了this,但我並不真正瞭解這個tmp目錄是什麼以及如何使用它。我在Windows上工作,所以我使用Cygwin作爲shell替換。

感謝所有幫助

回答

8

tmp目錄是/tmp簡寫。在Linux上,每當您重新啓動計算機時都會清除一個目錄,因此它是臨時文件的好地方。

所以,你可以這樣做:

$ rsync data.csv [email protected]:/tmp 
$ ssh [email protected] 
$ mongoimport -d dbName -c collectionName --type csv /tmp/data.csv --headerline 
+0

謝謝克里斯蒂娜。我安裝[rockMongo(http://code.google.com/p/rock-php/wiki/rock_mongo)管理蒙戈實例,這也提供了一些導入工具。 – thomash 2012-03-19 21:16:19

+1

我會說使用scp而不是rsync。您還需要在mongoimport命令中指定--host。使用環境變量--host $ OPENSHIFT_NOSQL_DB_HOST。您可能還需要在您的MOngo實例上使用管理員帳戶的用戶名和密碼。當我今晚做的命令時,它看起來像這樣: mongoimport -d TBIRD -c公園--type JSON --file TBIRD的/ tmp/parkcoord.json -h $ OPENSHIFT_NOSQL_DB_HOST -u管理-p XXXXXXXXX – TheSteve0 2012-03-21 07:01:06

+1

作爲2013年12月21日你的必須使用$ OPENSHIFT_MONGODB_DB_HOST而不是$ OPENSHIFT_NOSQL_DB_HOST – netimen 2013-12-21 09:17:21

1

我在我的openshift實例安裝RockMongo管理MongoDB的。 這是一個不錯的用戶界面,有點像phpMyAdmin for mysql

+0

讓我知道如果你得到的進口在RockMongo工作。我今晚試過了,這是不行的。我做了上面給出的scp,ssh,mongoimport路由。 後來我又用一個JSON文件不是CSV – TheSteve0 2012-03-21 06:58:56

+0

遺憾的響應晚。 RockMongo中的導入功能也沒有幫助我。 Eventualy我成功通過該.csv轉換成JSON和使用mongoimport – thomash 2012-08-21 09:44:34

+0

很高興聽到它的工作 – TheSteve0 2012-08-21 18:38:18

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文件,然後輸入json文件。

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

1

誰希望使用mongorestore對我下面的工作用戶:

首先使用scp將您的轉儲複製到openshift上的數據目錄中:

scp yourfile.bson [email protected]: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 
+0

非常感謝分享此導入! – 2016-05-12 20:16:48

+0

@ digita1-anal0g - 爲你高興的有用:) – Neil 2016-05-12 20:17:43

0

西蒙的答案相似,但這是我如何導入.json到數據庫:

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