場景
將遠程服務器A上的MongoDB數據庫test下的集合people導入到服務器B數據庫test的集合people_test下。
簡單方案
先將A服務器數據導出,然后再執行導入到B服務器。
下面的導入和導出操作,均是在git bash下執行,如果是在windows命令行下需要稍微更改路徑。
工具
利用本地原生MongoDB安裝目錄下的bin目錄中的mongoexport和mongoimport
導出數據
這里,我打算將遠程服務器A上的數據導入到我本地windows系統e盤temp目錄下;
首先,進入到MongoDB的安裝目錄,然后:
cd bin
mongoexport -u admin -p 123456 --authenticationDatabase admin -h 10.5.10.22:27017 -d test -c people -o /e/temp/people.json
參數 | 說明 |
---|---|
-u | 用戶名 |
-p | 密碼 |
--authenticationDatabase | 保存用戶憑據的數據庫(一般是admin) |
-h | host:port |
-d | 數據庫名 |
-c | 表名(只能接受一個表名參數,不能接受由空格、逗號等 分隔的多個表名,也不能用"*") |
-o | 導出的文件名 |
--file | 導入的文件名 |
--upsert | 導入的記錄創建或更新 |
更多詳細的操作:mongoexport --help。
導入數據
這里我打算將本地windows系統e盤temp目錄下的people.json文件導入到服務器B上;
也是在bin目錄下;
mongoimport -u admin -p 123456 --authenticationDatabase admin -h 10.6.22.12:27017 -d test -c people_test --file /e/temp/people.json --upsert rm /e/temp/people.json
總結
執行 | |
---|---|
導出 | mongoexport -u 用戶名 -p 密碼 --authenticationDatabase 用戶憑據數據庫 -h ip:port -d 數據庫名 -c 表名 -o 導出的文件名.json |
導入后刪除文件 | mongoimport -u 用戶名 -p 密碼 --authenticationDatabase 用戶憑據數據庫 -h ip:port -d 數據庫名 -c 表名 --file 導出的文件名.json --upsert && rm 導出的文件名.json |
能夠利用windows本地安裝的MongoDB bin目錄下的程序導入和導出遠程服務器上的數據;
如果是導出本地MongoDB的數據,就不需要用戶名和密碼以及保存用戶憑據的數據庫。
MongoDB官方文檔: