十士修、MongoDB數據遷移工具介紹

前言

在工作中偶爾會遇到遷移數據等操作窃诉。比如如下場景:

  • 數據庫備份(容災)
  • 導出服務端數據(統(tǒng)計)
  • 將服務端數據放入本地(搭建開發(fā)環(huán)境)
  • 跨網段傳輸數據(網絡不通)

不管你出于什么原因鹉梨,一定要學一寫數據遷移操作。

遷移工具

MongoDB提供了兩個工具廓奕,分別用于數據的導出和導入:

  • mongoexport
  • mongoimport

這兩個工具可以將數據庫中的集合導出為CSV或者JSON格式的文件。
注意:遷移單位是”集合“档叔,不是數據庫桌粉、也不是某個文檔。

這兩個工具是命令行工具蹲蒲,并沒有可視化界面番甩。
接下來,我們需要了解這兩個工具的參數届搁,來對工具有一個宏觀上的了解缘薛。

參數說明

命令行中輸入如下命令,可以查看mongoexport的參數說明卡睦。

mongoexport --help

image.png

好在參數不多宴胧,我們可以逐項了解。

  • general options(常見選項):
    • --help: 幫助文檔
    • --version: 查看工具版本號
    • --config=: 配置文件的路徑
  • verbosity options(細節(jié)選項):
    • -v, --verbose=<level>: 詳細的日志輸出
    • --quiet: 隱藏所有輸出表锻。
  • connection options(連接選項):
    • -h, --host=<hostname>: 要連接的Mongo服務器地址
    • --port=<port>: Mongo服務端口號恕齐,可以和--host參數一同使用,例如瞬逊,--host hostname:port
  • ssl options(SSL選項):
    • --ssl: 通過SSL協(xié)議連接Mongo显歧,前提是Mongo需要開啟SSL
    • --sslCAFile=<filename>: 包含根證書的.pem文件
    • --sslPEMKeyFile=<filename>: 包含秘鑰和證書的.pem文件
    • --sslPEMKeyPassword=<filename>: 解密sslPEMKeyFile文件的密碼
    • --sslCRLFile=<filename>: 沒理解
    • --sslFIPSMode: 使用FIPS模式替代openssl庫
    • --tlsInsecure: 繞過服務器證書驗證
  • authentication options(認證選項):
    • -u, --username=<username>: MongoDB用戶名
    • -p, --password=<password>: MongoDB密碼
    • --authenticationDatabase=<database-name> : 需要賬號密碼校驗后連接的數據庫
    • --authenticationMechanism=<mechanism>: 沒理解
    • --awsSessionToken=<aws-session-token>: 通過亞馬遜IAM(身份角色)的令牌
  • kerberos options(不安全網絡環(huán)境選項):
    • --gssapiServiceName=<service-name>: 當使用GSSAPI或者Kerberos協(xié)議時的服務名。
    • --gssapiHostName=<host-name>: 當使用GSSAPI或者Kerberos協(xié)議時的主機名确镊。
  • namespace options(命名空間選項):
    • -d, --db=<database-name>: 數據庫名稱
    • -c, --collection=<collection-name>: 集合名稱
  • uri options(連接字符串選項):
    • --uri=<mongodb-uri>: 連接mongo時使用的字符串
  • output options(輸出選項):
    • -f, --fields=<field>[,<field>]*: 導出的字段名稱士骤,如果有多個字段用逗號隔開
    • --fieldFile=<filename>: 沒理解。
    • --type=<type>: 導出文件的格式蕾域,支持json或者csv
    • -o, --out=<filename>:導出的文件名
    • --jsonArray: 輸出為json數組格式拷肌,而非每行一個文檔對象
    • --pretty: 輸出時格式化json
    • --noHeaderLine: 導出為csv格式時到旦,是否包含字段名作為csv第一行(不加此參數是帶字段名的)
    • --jsonFormat=<type>: 沒理解
  • querying options(查詢選項):
    • -q, --query=<json>: 支持json格式的篩選條件,導出篩選后的數據
    • --queryFile=<filename>: 存放json格式的篩選條件巨缘,從文件中讀取查詢條件添忘。
    • --readPreference=<string>|<json>: 沒理解
    • --forceTableScan: 沒理解
    • --skip=<count>: 跳過前N個文檔
    • --limit=<count>: 導出N個文檔
    • --sort=<json>: 對導出的數據排序,例如 '{x:1}'
    • --assertExists: 如果指定此參數若锁,在集合不存在時會報錯

mongoimport --help

image.png

mongoimport的大部分參數和mongoexport是一樣的搁骑,我們僅看一下不一樣的部分即可。

  • input options(輸入選項):
    • -f, --fields=<field>[<field>, ]*: 限定導入的字段拴清,如果有多個字段用逗號隔開
    • --fieldFile=<filename>: 可以將字段名寫入文件中靶病,然后通過此文件來指定導入的字段名
    • --file=<filename>: 從文件中導入數據到數據庫
    • --headerlien: 用文件的第一行作為字段名稱,僅導入csv文件時可用
    • --jsonArray: 將輸入的數據源看做json數組
    • --parseGrace=<grace>: 輸入數據類型錯誤時口予,4種模式可選娄周,"autoCast"(自動轉換), "skipField"(跳過字段), "skipRow"(跳過此文檔/行),"stop"(停止,默認選項)
    • --type=<type>: 數據文件的格式沪停,csv煤辨、json、tsv
    • --columnHaveType: 沒看懂
    • --legacy: 校驗json格式是否合法
    • --useArrayIndexFields: 沒看懂
  • ingest options(攝入選項):
    • --drop: 插入數據前先刪除集合
    • --ignoreBlanks: 忽略csv文件中的空行
    • --maintainInsertionOrder: 保證文檔插入順序
    • --numInsertionWorkers=<number>: 并發(fā)插入木张,指定線程數量
    • --stopOnError: 發(fā)生錯誤時停止
    • --mode=[insert|upsert|merge|delete]: 僅插入众辨,跳過匹配的文檔。插入新文檔舷礼,或替換已經存在的文檔鹃彻。插入新文檔,或修改已經存在的文檔妻献。刪除匹配的文檔蛛株。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市育拨,隨后出現(xiàn)的幾起案子谨履,更是在濱河造成了極大的恐慌,老刑警劉巖熬丧,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋粟,死亡現(xiàn)場離奇詭異,居然都是意外死亡析蝴,警方通過查閱死者的電腦和手機害捕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闷畸,“玉大人尝盼,你說我怎么就攤上這事√谏叮” “怎么了东涡?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長倘待。 經常有香客問我疮跑,道長,這世上最難降的妖魔是什么凸舵? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任祖娘,我火速辦了婚禮,結果婚禮上啊奄,老公的妹妹穿的比我還像新娘渐苏。我一直安慰自己,他們只是感情好菇夸,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布琼富。 她就那樣靜靜地躺著,像睡著了一般庄新。 火紅的嫁衣襯著肌膚如雪鞠眉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天择诈,我揣著相機與錄音械蹋,去河邊找鬼为障。 笑死钢属,一個胖子當著我的面吹牛,可吹牛的內容都是我干的玻佩。 我是一名探鬼主播荷科,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼唯咬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了步做?” 一聲冷哼從身側響起副渴,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎全度,沒想到半個月后煮剧,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡将鸵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年勉盅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顶掉。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡草娜,死狀恐怖,靈堂內的尸體忽然破棺而出痒筒,到底是詐尸還是另有隱情宰闰,我是刑警寧澤茬贵,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站移袍,受9級特大地震影響解藻,放射性物質發(fā)生泄漏。R本人自食惡果不足惜葡盗,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一螟左、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧觅够,春花似錦胶背、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窘拯,卻和暖如春砸抛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背树枫。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工直焙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砂轻。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓奔誓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搔涝。 傳聞我的和親對象是個殘疾皇子厨喂,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容

  • 一、MongoDB簡介 C++語言編寫庄呈,基于分布式文件存儲蜕煌,開源數據庫; 在高負載情況下诬留,保證服務器性能 為web...
    qianxun0921閱讀 218評論 0 1
  • Mongodb的特點: 模式自由:可以把不同結構的文檔存儲在同一個數據庫里 面向集合的儲存:適合儲存JSON風格文...
    姓高名旭升閱讀 752評論 0 0
  • Mongodb的特點: 模式自由:可以把不同結構的文檔存儲在同一個數據庫里 面向集合的儲存:適合儲存JSON風格文...
    浮_屠閱讀 2,673評論 0 0
  • # MongoDB ## 數據庫分類 ### 關系型數據庫 * 具備ACID特性 * Atomic原子性斜纪,也就...
    奧利奧_4e9e閱讀 571評論 0 0
  • 2.1 導入導出工具說明 2.1.1 使用Gpfdist服務 GPFDIST是emc工程師推薦的最快的導入導...
    Michael_林閱讀 4,669評論 0 3