1. 程式人生 > >MongoDB學習(六)資料庫的備份、還原、匯入及匯出

MongoDB學習(六)資料庫的備份、還原、匯入及匯出

        MongoDB官方提供了兩套資料匯入匯出工具,一般來說,進行整庫匯出匯入時使用mongodumpmongorestore,這一對組合操作的資料是BSON格式,進行大量dump和restore時效率較高。         進行單個集合匯出匯入時使用mongoexportmongoimport,這一對組合操作的資料是JSON格式,可讀性較高。

1、mongodump(備份)及mongorestore(還原)

1.1 mongodump

→說明:

        mongodump是一個用於匯出二進位制資料庫內容的實用工具,它匯出的bson文件中只會包含著集合文件等資訊,不包括索引資訊(索引資訊會單獨匯出),所以還原後,索引必須重建(這個不用擔心,使用mongorestore會自動重建mongodump生成的索引資訊)。3.4版本中添加了對只讀檢視的支援。

→引數(以下僅列舉常用引數,更多請參考help,下同):

命令 全稱 預設值 參考釋義
--help 檢視mongodump命令的使用幫助
--version 返回mongodump的版本號
-h --host <hostname><:port> localhost:27017 指定mongod要連線的主機名及埠號
--port <port> 27017 指定MongoDB例項監聽客戶連線的TCP埠號
-u --username <username> 指定用於向使用認證的MongoDB資料庫認證的使用者名稱,與--password和
--authenticationDatabase結合使用
-p --password <password> 指定用於向使用認證的MongoDB資料庫認證的密碼。與--username和 --
authenticationDatabase選項結合使用。
-d --db <database> 指定要備份的資料庫。如果不指定,mongodump會將此例項中的所有資料庫備份。
-c --collection <collection> 指定要備份的集合。如果不指定,則會將指定資料庫或例項中的所有集合備份。
--gzip 3.2版本+,壓縮輸出,如果mongodump指定匯出到目錄,則該選項會將每個檔案都壓縮,
並新增.gz字尾;
如果mongodump指定匯出到文件或標準輸出流,則該選項會壓縮到文件或輸出流中
-o --out <path> 指定匯出資料的目錄路徑,如不指定,則mongodump預設將檔案輸出到dump所在的工作目錄中。
該選項不能和--archive一起使用

→舉個栗子:

將mytest資料庫中的user集合匯出到F:\bk目錄下
mongodump -d mytest -c user -o F:\bk


其中的metadata.json即為索引資訊

1.2 mongorestore

→說明:

        mongorestore用來匯入資料到MongoDB例項中,3.0.0版本以上支援通過標準輸入流來匯入資料。

→引數:

命令 全稱 參考釋義
-d --db <database> 指定要還原的資料庫。如果不指定,restore將會還原dump記錄的所有資料庫,並會覆蓋現有資料庫資料
-c --collection <collection> 指定要還原的集合。如果不指定,mongorestore會從檔名中讀取識別集合名稱(如果有副檔名則會省略副檔名)
--drop  還原集合之前會先從目標資料庫中刪除集合,不會刪除不在備份中的集合。
--gzip 3.2版本+,從壓縮檔案中還原
<path> 要還原的資料檔案路徑,該引數必須是mongorestore命令的最後一個引數
其他引數與mongodump基本一致。

→舉個栗子:

通過user.bson檔案還原mytest資料庫中的user集合,並在還原之前進行刪除
mongorestore --drop -d mytest -c user F:\bk\mytest\user.bson

2、mongoexport(匯出)及mongoimport(匯入)

2.1 mongoexport

→引數:

命令 全稱 預設值 參考釋義
--help 檢視mongoexport的使用幫助
--version  檢視mongoexport的版本號
-d --db <database> 指定要在哪個資料庫上執行該命令
-c --collection <collection> 指定要匯出的集合
-f --fields <field1[,field2]> 指定匯出時只匯出一個或多個欄位,匯出多個時,需要使用逗號分隔;
當欄位中有空格時,需要用英文引號括起來。
-q --query <JSON> 提供查詢文件作為匯出資料來源
--type<string> json 指定要匯出的檔案型別,可選值:json,csv
-o --out <file> 指定要匯出的檔案路徑(含檔名),如果不指定,則會匯出為標準輸出(例如stdout)

→舉個栗子:

匯出mytest資料庫中的user集合到user.json檔案中
mongoexport -d mytest -c user -o F:\bk\user.json


2.2mongoimport

→引數:

命令 可選值 參考釋義
--ignoreBlanks 忽略要匯入檔案中的空欄位,如果不指定該引數,則預設會讀取空欄位並建立
--type <json|csv|tsv> json,csv,tsv 要匯入的檔案型別,另外支援tsv
--headerline  使用第一行作為欄位名稱
--mode <insert|upsert|merge> insert(插入),
upsert(替換資料庫中的文件),
merge(合併)
指定匯入過程中,如何應對資料庫文件與匯入檔案中的文件匹配
(預設會使用_id欄位對比)的情況
 其他引數與mongoexport基本一致

→舉個栗子:

從user.json檔案匯入到mytest資料庫中的user集合,並在之前進行刪除
mongoimport --drop -d mytest -c user --file F:\bk\user.json

3、使用視覺化工具MongoChef(現稱Studio3T)匯入匯出


如圖所示,連線之後,選中要匯出的資料庫或集合,上方選單欄有Export和Import按鈕,根據嚮導進行操作就可以了,比較簡單,相信猿友們都不在話下,就不一一列出了。