MongoDB學習(六)資料庫的備份、還原、匯入及匯出
阿新 • • 發佈:2019-01-10
MongoDB官方提供了兩套資料匯入匯出工具,一般來說,進行整庫匯出匯入時使用mongodump和mongorestore,這一對組合操作的資料是BSON格式,進行大量dump和restore時效率較高。
進行單個集合匯出匯入時使用mongoexport和mongoimport,這一對組合操作的資料是JSON格式,可讀性較高。
其中的metadata.json即為索引資訊
其他引數與mongodump基本一致。
其他引數與mongoexport基本一致
如圖所示,連線之後,選中要匯出的資料庫或集合,上方選單欄有Export和Import按鈕,根據嚮導進行操作就可以了,比較簡單,相信猿友們都不在話下,就不一一列出了。
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命令的最後一個引數 |
→舉個栗子:
通過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欄位對比)的情況 |
→舉個栗子:
從user.json檔案匯入到mytest資料庫中的user集合,並在之前進行刪除mongoimport --drop -d mytest -c user --file F:\bk\user.json
3、使用視覺化工具MongoChef(現稱Studio3T)匯入匯出
如圖所示,連線之後,選中要匯出的資料庫或集合,上方選單欄有Export和Import按鈕,根據嚮導進行操作就可以了,比較簡單,相信猿友們都不在話下,就不一一列出了。