mongodb 導入導出


簡介

mongodb提供了mongoexport/mongoimport以支持將數據表進行導入導出。
導入導出命令一般用於特殊的數據處理用途,由於不包含索引處理,且json格式無法支持所有bson類型,因此不適合用於重要數據的備份恢復。

參考文檔

https://docs.mongodb.com/manual/reference/program/mongoimport/
https://docs.mongodb.com/manual/reference/program/mongoexport/

mongoexport用法

說明
mongoexport 支持將mongodb數據表導出為json或csv格式,可在導出時指定一定的查詢條件實現過濾。
命令的執行要求當前用戶對數據庫有read權限;
在mongos或副本集上執行時,默認采用primary readperference選項,即優先從主庫上讀取。

示例用法

./mongoexport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA -u appuser -p appuser@2016 -o export/T_TEST_DATA.json

參數說明

參數名 參數值
host[h] 主機
port 端口
db[d] 目標數據庫
username[u] 用戶名
password[p] 密碼
authenticationDatabase 鑒權數據庫,不指定則使用database參數
collection[c] 目標Collection
query[q] 查詢過濾條件,不指定則導出全表
out[o] 目標輸出文件
type 格式類型,默認json
skip skip條件
limit limit條件
sort sort條件

其他用法

//按分頁導出
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --skip 100 --out export.1.json

//按查詢條件導出
mongoexport -d test -c records -q '{ a: { $gte: 3 } }' --out exportdir/myRecords.json

mongoimport用法

說明
mongoimport 支持將json或csv格式的數據文件導入到mongodb數據庫,該命令與mongoexport結合使用。

命令的執行要求當前用戶對數據庫有readWrite權限;
導入命令要求在mongos或副本集主節點上執行。

示例用法

./bin/mongoimport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA_1 -u appuser -p appuser@2016 --numInsertionWorkers 50 --file export/T_TEST_DATA.json

參數說明

參數名 參數值
host[h] 主機
port 端口
db[d] 目標數據庫
username[u] 用戶名
password[p] 密碼
authenticationDatabase 鑒權數據庫,不指定則使用database參數
collection[c] 目標Collection,不指定則采用文件名稱
drop 指定該選項,則導入前刪除表
file 目標導入文件
type 格式類型,默認json
mode 導入模式,有insert、upsert、merge,默認insert
numInsertionWorkers 並發數

導入模式
upsert模式,會將已有數據替換;
merge模式,會將已有數據進行合並;

執行效率
使用insert的性能最高,建議使用;
在多核的環境中,通過numInsertionWorkers可指定並發運行,可提升一定效率。

參考數據

使用mongoexport 導出860W的數據記錄,文件大小2.9G,共耗時10分鍾

使用mongoimport 導入860W的數據記錄,使用--mode=insert模式,用時3分鍾15秒(numInsertionWorkers=50)
使用mongoimport 導入860W的數據記錄,使用--mode=insert模式,用時5分鍾(numInsertionWorkers=1)
使用mongoimport 導入860W的數據記錄,使用--mode=upsert模式,用時45分鍾(numInsertionWorkers=1)

使用mongodump 導出為40s,而mongorestore為4分鍾。


免責聲明!

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



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