標籤:開啟 不能 合數 word 進入 解決方案 方式 欄位 支援
由於一直以來用微軟可視化圖形介面習慣了,而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集合匯出與匯入