標籤:環境 技術分享 雙引號 源檔案 生產環境 匯出資料 生產 特殊 class
最近開發一個版本的功能當中用到了MongoDB分頁,懶於造資料,於是就研究了下從生產環境上匯出資料到本地來進行測試。
研究了一下,發現MongoDB的備份還原和MySQL文法還挺類似,下面請看詳細介紹。
一、備份資料
因為需要測試資料,所以先要從生產伺服器(CentOS 6.5)上備份出一份資料出來,
格式: mongodump-h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 --drop 檔案存在路徑
樣本:
/opt/mongodb/bin/mongodump -h 127.0.0.1 --port 27017 -u 使用者名稱 -p 密碼 -d ad_api_count -o /tmp
(注意Linux下如果密碼有特殊字元需要\轉義)
進入到備份出來的資料ad_api_count目錄下,可以看到ad_api_count中兩個集合的資訊
二、還原資料庫
把生產環境下匯出資料庫下載到本地的e:\ee\ad_api_count下,接下來我們就可以匯入資料到本地MongoDB進行測試了
命令格式:mongorestore -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 檔案名稱的具體路徑(尾碼格式為bson)
樣本:
cd C:\Program Files\MongoDB\Server\3.4\binmongorestore.exe -h 127.0.0.1 --port 27017 -u 使用者名稱 -p 密碼 -d ad_api_count e:\cust\ad_api_count\userAdCount.bson
如,我們知道就完成了還原工作
三、其他
mongoexport匯出表,或匯出表中部分欄位:
命令格式:mongoexport -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 -f 欄位 -q 條件匯出 --csv -o 檔案名稱的具體路徑(尾碼格式可以是.dat或.csv);
mongoimport匯入表,或者表中部分欄位 :
1.還原整表匯出的非csv檔案
命令格式:mongoimport -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsert --drop 檔案名稱的具體路徑 (--drop當不需要刪除源檔案可不加)
2.還原部分欄位的匯出檔案
命令格式:mongoimport -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsertFields 欄位 --drop 檔案名稱的具體路徑 (--drop當不需要刪除源檔案可不加)
3.還原匯出的csv檔案(匯出資料時如果不加--csv選項,匯出的資料就會存在很多雙引號,匯入就會失敗)
命令格式:mongoimport -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --type 類型(csv) --headerline --upsert --drop 檔案名稱的具體路徑
注意:如果資料庫存在資料,要匯入最新的資料,則需要加--upsert選項,會更新資料,否則會報錯(提示重複鍵錯誤收集)
一次生產環境下MongoDB備份還原資料