mongodb.使用自帶命令工具導出導入數據

来源:https://www.cnblogs.com/bigron/archive/2023/04/24/17351140.html
-Advertisement-
Play Games

記錄 mongo 資料庫用原生自帶的命令工具使用 json 文件方式進行導入、導出的操作! 在一次數據更新中,同事把老數據進行了清空操作,但是新的邏輯數據由於某種原因(好像是她的電腦中病毒了),一直無法正常連接資料庫進行數據插入,然後下午2點左右要給甲方演示,所以要緊急恢複本地的部分數據到生產庫。 ...


記錄 mongo 資料庫用原生自帶的命令工具使用 json 文件方式進行導入、導出的操作!

在一次數據更新中,同事把老數據進行了清空操作,但是新的邏輯數據由於某種原因(好像是她的電腦中病毒了),一直無法正常連接資料庫進行數據插入,然後下午2點左右要給甲方演示,所以要緊急恢複本地的部分數據到生產庫。

在此之前我只用過 mongo 自帶的命令 mongoexport 進行過導出操作,把資料庫的某個 collection 導出為 json 文件,那麼這次是要先導出再導入,實現了一個完整的數據遷移閉環,所以在此記錄一下,以備不時之需。

一、下載 mongo 工具包

mongo工具包包括管理數據的一些工具 exe 文件,具體如下:

  • mongoexport.exe:導出數據命令工具
  • mongoimport.exe:導入數據命令工具
  • bsondump.exe: 用於將導出的BSON文件格式轉換為JSON格式
  • mongodump.exe: 用於從mongodb資料庫中導出BSON格式的文件,類似於mysql的dump工具mysqldump
  • mongofiles.exe: 用於和mongoDB的GridFS文件系統交互的命令,並可操作其中的文件,它提供了我們本地系統與GridFS文件系統之間的存儲對象介面
  • mongorestore.exe: 用於恢復導出的BSON文件到 mongodb 資料庫中
  • mongostat.exe: 當前 mongod 狀態監控工具,像linux中監控linux的vmstat
  • mongotop.exe: 提供了一個跟蹤mongod資料庫花費在讀寫數據的時間,為每個collection都會記錄,預設記錄時間是按秒記錄

這個工具跟 mongo 的版本有關係,部分版本自帶該工具包,比如下圖的 4.x 版本,我用的 5.0 版本沒有自帶工具包,所以我需要先去官網下載工具包文件,然後把 bin 目錄下的工具複製到 5.0 版本的 bin 目錄下,才能進行數據的導出、導入操作。
工具包的下載地址為:mongo工具包下載地址,解壓後把bin文件夾里的文件全部拷貝到 MongoDB 安裝目錄bin文件夾下。

二、導出數據

進入到 mongo 的安裝目錄 bin 下,使用 mongoexport 工具進行數據的 導出 操作

1、無密碼導出操作:

mongoexport.exe -h localhost:28007 -d database  -c result -o D:/project/result.json

2、有密碼的導出操作:

mongoexport.exe -h localhost:28007 -d database -u admin  -p 123456  -c result -o D:/project/result.json

三、導入數據

進入到 mongo 的安裝目錄 bin 下,使用 mongoimport 工具進行數據的 導入 操作

mongoimport.exe -h localhost:28007 -u admin -p 123456 -d database -c result --file D:/project/result.json

執行結果如下表示導入成功

D:\MongoDB\Server\5.0\bin>mongoimport.exe -h localhost:28007 -u admin -p 123456 -d database -c result --file D:/project/result.json
2023-04-11T13:34:39.799+0800    connected to: mongodb://localhost:28007/
2023-04-11T13:34:42.799+0800    [#######.................] database.result 20.2MB/66.4MB (30.4%)
2023-04-11T13:34:45.799+0800    [##############..........] database.result 40.5MB/66.4MB (61.1%)
2023-04-11T13:34:48.799+0800    [#####################...] database.result 60.4MB/66.4MB (91.0%)
2023-04-11T13:34:49.660+0800    [########################] database.result 66.4MB/66.4MB (100.0%)
2023-04-11T13:34:49.660+0800    386810 document(s) imported successfully. 0 document(s) failed to import.

參數釋義:
-h :指的是 host 主機地址
-u :指的是用戶賬號
-p :指的是賬戶密碼
-d :指的是資料庫 database 簡稱
-c :指的是表 collection 簡稱
-o :指的是導出路徑 output 簡稱
--file :指的是需要導入的文件

四、其他

使用過程中可以使用 --help 進行參數意思的查看

D:\MongoDB\Server\5.0\bin>mongoimport --help
Usage:
  mongoimport <options> <connection-string> <file>

Import CSV, TSV or JSON data into MongoDB. If no file is provided, mongoimport reads from stdin.

Connection strings must begin with mongodb:// or mongodb+srv://.

See http://docs.mongodb.com/database-tools/mongoimport/ for more information.

general options:
      /help                                       print usage
      /version                                    print the tool version and exit
      /config:                                    path to a configuration file

verbosity options:
  /v, /verbose:<level>                            more detailed log output (include multiple times for more verbosity,
                                                  e.g. -vvvvv, or specify a numeric value, e.g. --verbose=N)
      /quiet                                      hide all log output

connection options:
  /h, /host:<hostname>                            mongodb host to connect to (setname/host1,host2 for replica sets)
      /port:<port>                                server port (can also use --host hostname:port)

ssl options:
      /ssl                                        connect to a mongod or mongos that has ssl enabled
      /sslCAFile:<filename>                       the .pem file containing the root certificate chain from the
                                                  certificate authority
      /sslPEMKeyFile:<filename>                   the .pem file containing the certificate and key
      /sslPEMKeyPassword:<password>               the password to decrypt the sslPEMKeyFile, if necessary
      /sslCRLFile:<filename>                      the .pem file containing the certificate revocation list
      /sslFIPSMode                                use FIPS mode of the installed openssl library
      /tlsInsecure                                bypass the validation for server's certificate chain and host name

authentication options:
  /u, /username:<username>                        username for authentication
  /p, /password:<password>                        password for authentication
      /authenticationDatabase:<database-name>     database that holds the user's credentials
      /authenticationMechanism:<mechanism>        authentication mechanism to use
      /awsSessionToken:<aws-session-token>        session token to authenticate via AWS IAM

kerberos options:
      /gssapiServiceName:<service-name>           service name to use when authenticating using GSSAPI/Kerberos
                                                  (default: mongodb)
      /gssapiHostName:<host-name>                 hostname to use when authenticating using GSSAPI/Kerberos (default:
                                                  <remote server's address>)

namespace options:
  /d, /db:<database-name>                         database to use
  /c, /collection:<collection-name>               collection to use

uri options:
      /uri:mongodb-uri                            mongodb uri connection string

input options:
  /f, /fields:<field>[,<field>]*                  comma separated list of fields, e.g. -f name,age
      /fieldFile:<filename>                       file with field names - 1 per line
      /file:<filename>                            file to import from; if not specified, stdin is used
      /headerline                                 use first line in input source as the field list (CSV and TSV only)
      /jsonArray                                  treat input source as a JSON array
      /parseGrace:<grace>                         controls behavior when type coercion fails - one of: autoCast,
                                                  skipField, skipRow, stop (default: stop)
      /type:<type>                                input format to import: json, csv, or tsv
      /columnsHaveTypes                           indicates that the field list (from --fields, --fieldsFile, or
                                                  --headerline) specifies types; They must be in the form of
                                                  '<colName>.<type>(<arg>)'. The type can be one of: auto, binary,
                                                  boolean, date, date_go, date_ms, date_oracle, decimal, double, int32,
                                                  int64, string. For each of the date types, the argument is a datetime
                                                  layout string. For the binary type, the argument can be one of:
                                                  base32, base64, hex. All other types take an empty argument. Only
                                                  valid for CSV and TSV imports. e.g. zipcode.string(),
                                                  thumbnail.binary(base64)
      /legacy                                     use the legacy extended JSON format
      /useArrayIndexFields                        indicates that field names may include array indexes that should be
                                                  used to construct arrays during import (e.g. foo.0,foo.1). Indexes
                                                  must start from 0 and increase sequentially (foo.1,foo.0 would fail).

ingest options:
      /drop                                       drop collection before inserting documents
      /ignoreBlanks                               ignore fields with empty values in CSV and TSV
      /maintainInsertionOrder                     insert the documents in the order of their appearance in the input
                                                  source. By default the insertions will be performed in an arbitrary
                                                  order. Setting this flag also enables the behavior of --stopOnError
                                                  and restricts NumInsertionWorkers to 1.
  /j, /numInsertionWorkers:<number>               number of insert operations to run concurrently
      /stopOnError                                halt after encountering any error during importing. By default,
                                                  mongoimport will attempt to continue through document validation and
                                                  DuplicateKey errors, but with this option enabled, the tool will stop
                                                  instead. A small number of documents may be inserted after
                                                  encountering an error even with this option enabled; use
                                                  --maintainInsertionOrder to halt immediately after an error
      /mode:[insert|upsert|merge|delete]          insert: insert only, skips matching documents. upsert: insert new
                                                  documents or replace existing documents. merge: insert new documents
                                                  or modify existing documents. delete: deletes matching documents
                                                  only. If upsert fields match more than one document, only one
                                                  document is deleted. (default: insert)
      /upsertFields:<field>[,<field>]*            comma-separated fields for the query part when --mode is set to
                                                  upsert or merge
      /writeConcern:<write-concern-specifier>     write concern options e.g. --writeConcern majority, --writeConcern
                                                  '{w: 3, wtimeout: 500, fsync: true, j: true}'
      /bypassDocumentValidation                   bypass document validation

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在參照一些行業系統軟體的時候,發現一個做的挺不錯的系統功能-系統參數管理,相當於把任何一個基礎的系統參數碎片化進行管理,每次可以讀取一個值進行管理,這樣有利於我們快速的處理業務需求,是一個挺好的功能。本篇隨筆模擬這個功能,基於SqlSugar開發框架的基礎上,利用代碼生成工具快速生成系統參數管理界面... ...
  • 一:背景 1. 講故事 上周有位朋友找到我,說他的 API 被多次調用後出現了記憶體暴漲,讓我幫忙看下是怎麼回事?看樣子是有些擔心,但也不是特別擔心,那既然找到我,就給他分析一下吧。 二:WinDbg 分析 1. 到底是哪裡的泄露 這也是我一直在訓練營灌輸的理念,一定要知道是哪一邊的暴漲,否則很可能就 ...
  • 飛騰愛好者技術交流群碼公眾號“烏拉大喵喵” 顆粒線序配置輔助工具 B站講解視頻: 正文內容: 一、 飛騰X100顯存使用LPDDR4時,需要工程師在X100的固件中去配置線序交換說明,就類似下麵這個: 圖1 我們需要輸入每個slice中DQ的線序,也需要輸入slice之間的交換關係,這個工作量也不小 ...
  • 一、 前言 搭建和維護集群環境中時鐘同步是非常重要一環。如果集群的時間不統一,例如ceph集群就會報錯無法更新數據、CDH集群無法添加客戶端等等。目前主流在Linux系統搭建集群用到NTP和chrony軟體,本文簡單介紹兩者的集群搭建。 二、 NTP和chrony區別 根據chrony官網描述,主要 ...
  • 使用華為雲鯤鵬彈性雲伺服器部署Discuz 華為雲配置地址: 實驗目的與基本要求 實驗目的: Discuz!是一套通用社區論壇軟體系統,用戶在不需要任何編程的基礎上,通過簡單的設置和安裝,在互聯網上搭建起具備完善功能、很強負載能力和可高度定製的論壇服務。實驗將在華為雲鯤鵬彈性雲伺服器CentOS系統 ...
  • 伺服器環境:windows server,phpstudy,Apache 一、阿裡雲下載SSL證書 1、前往阿裡雲官網 登錄進入控制台,搜索“SSL證書(應用安全)”,點擊左側“SSL證書”菜單,點擊“免費證書” 2、購買證書 點擊“立即購買”,選擇配置,支付金額為0元,即為免費。 3、創建證書 購 ...
  • 前言 錄這套教程主要幫助那些對Linux瞭解很少但又想做一個初步學習的小伙伴,因為我們一般在找開發相關的工作面試時偶爾也會被問到,而且做為一名開發人員如果不會操作Linux操作系統確實也有些說不過去,因為一般我們在企業中用到的中間件、服務的部署等都是在Linux上,本期教程就帶著大家來入門下Linu ...
  • 一款輕量級、高性能、功能強大的內網穿透代理伺服器。支持tcp、udp、socks5、http等幾乎所有流量轉發,並帶有功能強大的web管理端。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...