PCB MongoDB 數據庫 Collection集合導出與導入
由於一直以來用微軟可視化圖形界面習慣了,而MongoDB是命令式操作,而用系統自帶CMD操作不方便,
這裏介紹一款CMD的替代品,大小100多M。
Cmder工具下載 https://github.com/cmderdev/cmder/releases
接下來操作全部用Cmder工具來執行指令操作演示
一.Collection集合導出與導入工具介紹:
NoSQL中Collection集合對應SQL的的關系相當於表的概念,即對表的導出與導入。
導出集合數據工具 mongoexport.exe
導出集合數據工具 mongoimport.exe
二.準備階段
1.啟動 :Cmder.exe (沒安裝的話,用CMD一樣可以)
2.輸入:D: 進行MongoDB安裝盤
3.輸入:cd D:\Program Files\MongoDB\Server\4.0\bin 進入MongoDB安裝目錄
三.Collection集合導出--Json格式
mongoexport -d pcbdb -c ppeflow -o "e:\db\ppeflow.json"
參數說明:
-d pcbdb 數據庫名
-c ppeflow 集合名(相當SQL中的表名)
-o "e:\db\ppeflow.json" 輸出路徑
--typeo json 默認json輸出,當然加入此參數入
四.Collection集合導出--CSV格式
mongoexport -d pcbdb -c ppeflow --type csv -f "_id,techname,orderid" -o "e:\db\ppeflow.csv"
參數說明:
-d pcbdb 數據庫名
-c ppeflow 集合名(相當SQL中的表名)
--type csv 輸出格式(註意type前面有2個-)
-f "_id,techname,orderid" 輸出字段名(字段與字段之間用,分隔)
-o "e:\db\ppeflow.csv" 輸出路徑
五.Collection集合導入--Json格式
mongoimport.exe -d pcbdb -c ppeflow1 --file "e:\db\ppeflow.json"
參數說明:
-d pcbdb 數據庫名
-c ppeflow1 集合名(當不存在時,自動創建)
-o "e:\db\ppeflow.json" 導入Json路徑
--typeo json 默認json輸入格式,當然加入此參數入
六.Collection集合導入--CSV格式
mongoimport -d pcbdb -c ppeflow2 --type csv -f "_id,techname,orderid" --file "e:\db\ppeflow.csv"
參數說明:
-d pcbdb 數據庫名
-c ppeflow2 集合名(相當SQL中的表名)
--type csv 輸出格式(註意type前面有2個-)
-f "_id,techname,orderid" 輸入字段名(字段與字段之間用,分隔)
--file "e:\db\ppeflow.csv" 讀取CSV路徑(註意file前面有2個-)
-headerline 除去首行的字段行(此例子沒加此參數,原因報錯,未找到解決方法)
七.關鍵參數說明
h,--host :代表遠程連接的數據庫地址,默認連接本地Mongo數據庫; --port:代表遠程連接的數據庫的端口,默認連接的遠程端口27017; -u,--username:代表連接遠程數據庫的賬號,如果設置數據庫的認證,需要指定用戶賬號; -p,--password:代表連接數據庫的賬號對應的密碼; -d,--db:代表連接的數據庫; -c,--collection:代表連接數據庫中的集合; -f, --fields:代表導入集合中的字段; --type:代表導入的文件類型,包括csv和json,tsv文件,默認json格式; --file:導入的文件名稱 --headerline:導入csv文件時,指明第一行是列名,不需要導入;
八.凝問解答
1.導出的json與CSV是什麽文本編碼類型是什麽格式?
導出的文本編碼類型是(encoding)UTF8.
2.用Excel打開CSV是亂碼,怎麽解決呢?
方法1:用NotePad打開,然後點擊菜單【編碼】->【轉為ANSI編碼】,再用Excel打開即可。
方法2:用Excel引用文本的方式加轉換,參考https://jingyan.baidu.com/article/48a4205705c098a925250455.html
3.導入CSV到MongoDB去掉首行的字段行?
按官方文檔:在導入CSV參數中加入-headerline 即可
mongoimport -d pcbdb -c ppeflow2 --type csv -headerline -f "_id,techname,orderid" --file "e:\db\ppeflow.csv"
但實際在筆者實測中,目前沒解決.報如下錯誤,
4.MongoDB導出CSV可以指定字段導出,那麽輸出Json文件是否能指定字段導出?
不能,導出的Json文件是整個集成中所有字段.
5.MongoDB導出CSV還是Json格式,如何選擇?
通過以下對比,請自行選擇.
大小對比: CSV占用字節數少 優勢
JSON占用字節數多
深層次結構對比:CSV如果對於大於2層嵌套結構樹節構查看不明確。 優勢
JSON深層次結構用Json樹結構查看器對結構定義清晰,
低層次結構對比:CSV如果對於<=2層嵌套結構樹節構查看定義清晰, 平局
JSON低層次結構用Json樹結構查看器對結構定義清晰, 平局
字段對比:CSV可選字段輸出, 優勢
JSON全部字段輸出
反序化列:CSV不支持
JSON支持 優勢
6.MongoDB導入CSV是否指定字段輸入?
不行,導入CSV並不可以指定字段導入,比如CSV中有3個字段,導入到MongoDB中不能只導入指定的2個字段
而這裏的指定字段名,是CSV文件中每個字段指定一個字段名,導入到MongoDB中,
如果CSV有3個字段,而導入的字段名只有2個,那CSV中第3個字段由MongoDB默認fled3字段
(最好CSV有多少個字段,導入的字段名就有多少個,保持字段名數量與字段數量匹配,並且順序一致)
7.MongoDB導出的Json後,然後再導入,導不進去?
由於導出JSON會將主鍵_id 即OjbectId,一起輸出來的,如果再導入數據庫中的的話,肯定會出現主鍵沖突
最佳解決方法:導入到另外一個集合,然後再通過2個集成的唯一主鍵對比,再進行突處理---沖突不替換,還是沖突替換)
後續對MongoDB的探索學習,主要是基於SQL已有的功能,在MongoDB也應該有的功能進行相應的實現,
後續更新內容:NoSQL與SQL 增刪改查的語句區別,主鍵索引,主從庫復制,備份還原,請求數據與性能監控,Log日誌,大尺寸文件GridFS.
PCB MongoDB 數據庫 Collection集合導出與導入