MongoDB數據導出與導入


最近公司新購買了部服務器,原有的業務需要轉入到新的服務器,而舊的服務器操作系統是Window的,需要把數據轉移新Centos的服務器。這么一樣,就需要把MongoDB的數據導出后,再導到Centos系統了,自己嘗試了好幾款MongoDB的界面管理工具,要么就是免費的限制了導出與導入的功能,要么就是根本沒有這項功能,折騰再三后,還是回歸到使用MongoDB的命令更爽。下面我們就來實際的操作吧!

 

環境:Window server 2016 Standard  -> Centos 7.9.2009 ,MongoDB 4.0.6

 

1、導出數據:

從window服務器導出數據:首先,打開CMD,通過命令,進行MongoDB所在的安裝目錄,輸入下面的命令:

mongodump -h 127.0.0.1 -d polygonImageMark -o c:/mongo/1m/

  執行后,CMD會有如下的提示,如下圖所示:

   

執行完成后,可以在C:/mongo/lm/ 目錄中,看到以數據庫 polygonImageMark_20210414 為名稱的目錄以及相應的數據文件:

  

參數

到了這里,我們想要的數據便都已經導出了。接下來,我們再來具體了解一下,這個導出命令  mongodump ,以及它常用的參數有下面的這些:

參數  作用 示例
--host 導出數據的主機名稱,或IP地址,以及端口號 --host <主機名1><:端口>
--port 端口號可以上面的host中寫明,也可以單獨寫 --host mongodb1.example.net --port 37017
--db / -d 指定MongoDB中數據庫的名稱 --db TestDb 或 -d TestDb
--collection 指定需要導出的集合的名稱,可以針對特定的集合導出數據 --collection users
--username / -u 指定數據庫中,有相應權限的用戶名 --username root  或 -u
--password / -p 指定數據庫中,對應用戶名的密碼 --password "123456" 或 -p
--out / -o 指定備份的文件存放的路徑 --out c:/mongo/  或 -o c:/mongo/
--authenticationDatabase 指定--username已在其中創建指定的身份驗證數據庫,后面為數據庫名稱 --authenticationDatabase orderdb
--query

提供JSON 文檔作為查詢,可選擇限制mongodump,您必須將查詢文檔用單引號 ( ) 括起來,以確保它不會與您的 shell 環境交互。'{ ... }'

作為過濾數據時使用

--query '{json data ...}'
--gzip 壓縮輸出。如果輸出到轉儲目錄,則會壓縮成單個文件。后綴為.gz --gzip
--archive

將輸出寫入單個存檔文件或標准輸出 ( stdout)。

您不能將--archive 選項與 --out 選項一起使用 

--archive = test.20150715.gz

 

 示例:

導出 test 數據庫存,壓縮存儲為 test.20150715.gz 文件

mongodump --archive = test.20150715.gz --gzip --db = test

 

 示例:

使用 “用戶” 導出 host 為 mongodb1.example.net ,端口為 37017 的所有數據庫的集合,並存儲到  /opt/backup/mongodump-2011-10-24 的文件目錄

mongodump --host mongodb1.example.net --port 37017 --username 用戶 --password "pass" --out /opt/backup/mongodump-2011-10-24

 

 2、導入數據

使用xftp工具,把需要上傳的備份文件上傳到Centos服務器,我這里是把文件夾改名為 LesionMark了。

 

 

 

 接下來,通過 Xshell 連接服務器 通過下面的命令,執行導入操作即可:

/usr/bin/mongorestore -h 127.0.0.1 -d yourDbName /backup/data/path

 

 

 

其中 /usr/bin/mongorestore 是執行導入數據的程序的位置,可能跟你的服務器的實際情況有差別,這個時候,可以通過 find / -name mongorestore 查找它的具體位置;

參數:

-h 為主機的名稱 或者 ip地址,我這里是服務器本機,所以直接用 127.0.0.1

-d 這個是指定導入的數據庫名稱,如果數據庫不存在,則會自動新建數據庫,然后再自動導入

后面的 /root/LesionMark 則是需要導入的數據備份文件所在的目錄

--drop 恢復的時候,先刪除當前數據,然后恢復備份的數據。就是說,恢復后,備份后添加修改的數據都會被刪除,慎用哦!我這里因為是遷移數據,所以沒用到這個參數

到這里,就結束了,感謝您的閱讀,如果寫得不對,或有疑問,請在下面的評論區留言哦,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM