赞
踩
在一次数据更新中,同事把老数据进行了清空操作,但是新的逻辑数据由于某种原因(好像是她的电脑中病毒了),一直无法正常连接数据库进行数据插入,然后下午2点左右要给甲方演示,所以要紧急恢复本地的部分数据到生产库。
在此之前我只用过 mongo 自带的命令 mongoexport 进行过导出操作,把数据库的某个 collection 导出为 json 文件,那么这次是要先导出再导入,实现了一个完整的数据迁移闭环,所以在此记录一下,以备不时之需。
mongo工具包包括管理数据的一些工具 exe 文件,具体如下:
这个工具跟 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。