MongoDB 导出 mongoexport 和导入 mongoimport

导出工具 mongoexport

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@ ~]# mongoexport --help
Usage:
mongoexport <options>

Export data from MongoDB in CSV or JSON format.

See http://docs.mongodb.org/manual/reference/program/mongoexport/ for more information.

general options:
--help print usage
--version print the tool version and exit

verbosity options:
-v, --verbose more detailed log output (include multiple times for more verbosity, e.g. -vvvvv)
--quiet hide all log output

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

authentication options:
-u, --username= username for authentication
-p, --password= password for authentication
--authenticationDatabase= database that holds the user's credentials
--authenticationMechanism= authentication mechanism to use

namespace options:
-d, --db= database to use
-c, --collection= collection to use

output options:
-f, --fields= comma separated list of field names (required for exporting CSV) e.g. -f "name,age"
--fieldFile= file with field names - 1 per line
--type= the output format, either json or csv (defaults to 'json')
-o, --out= output file; if not specified, stdout is used
--jsonArray output to a JSON array rather than one object per line
--pretty output JSON formatted to be human-readable

querying options:
-q, --query= query filter, as a JSON string, e.g., '{x:{$gt:1}}'
-k, --slaveOk allow secondary reads if available (default true)
--forceTableScan force a table scan (do not use $snapshot)
--skip= number of documents to skip
--limit= limit the number of documents to export
--sort= sort order, as a JSON string, e.g. '{x:1}'

关键参数说明:

  • -h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
  • –port:代表远程连接的数据库的端口,默认连接的远程端口27017;
  • -u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
  • -p,–password:代表连接数据库的账号对应的密码;
  • -d,–db:代表连接的数据库;
  • -c,–collection:代表连接数据库中的集合;
  • -f, –fields:代表集合中的字段,可以根据设置选择导出的字段;
  • –type:代表导出输出的文件类型,包括csv和json文件;
  • -o, –out:代表导出的文件名;
  • -q, –query:代表查询条件;
  • –skip:跳过指定数量的数据;
  • –limit:读取指定数量的数据记录;
  • –sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。

注意:当查询时同时使用sort,skip,limit,无论位置先后,最先执行顺序 sort再skip再limit。

实例:首先查看下数据库中的数据一共多少条,通过的命令的方式查看下我们要导出的数据信息

1
2
3
4
5
> db.bike.find().count()
16878865
> db.bike.find({"source":"ofo"}).limit(1)
{ "_id" : ObjectId("59e8c27804390e04a063159d"), "lat" : 39.9571954199, "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "source" : "ofo", "lng" : 116.3926501736 }
>

如何通过mongoexport导出”bikeId” : “pgdAVg”的数据,我导出了json和csv两种类型的数据;

1
2
3
4
#导出类型为json,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据
mongoexport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike -f bikeId,lat,lng,current_time,source --type=json -o bike.csv --query='{"source":"ofo"}' --limit=1
#导出类型为csv,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据
mongoexport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike -f bikeId,lat,lng,current_time,source --type=csv -o bike.csv --query='{"source":"ofo"}' --limit=1

导入工具 mongoimport

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoimport --help
Usage:
mongoimport <options> <file>

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

See http://docs.mongodb.org/manual/reference/program/mongoimport/ for more information.

general options:
--help print usage
--version print the tool version and exit

verbosity options:
-v, --verbose more detailed log output (include multiple times for more verbosity, e.g. -vvvvv)
--quiet hide all log output

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

authentication options:
-u, --username= username for authentication
-p, --password= password for authentication
--authenticationDatabase= database that holds the user's credentials
--authenticationMechanism= authentication mechanism to use

namespace options:
-d, --db= database to use
-c, --collection= collection to use

input options:
-f, --fields= comma separated list of field names, e.g. -f name,age
--fieldFile= file with field names - 1 per line
--file= 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
--type= input format to import: json, csv, or tsv (defaults to 'json')

ingest options:
--drop drop collection before inserting documents
--ignoreBlanks ignore fields with empty values in CSV and TSV
--maintainInsertionOrder insert documents in the order of their appearance in the input source
-j, --numInsertionWorkers= number of insert operations to run concurrently (defaults to 1)
--stopOnError stop importing at first insert/upsert error
--upsert insert or update objects that already exist
--upsertFields= comma-separated fields for the query part of the upsert
--writeConcern= write concern options e.g. --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}' (defaults to 'majority')

关键参数说明:

  • h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
  • –port:代表远程连接的数据库的端口,默认连接的远程端口27017;
  • -u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
  • -p,–password:代表连接数据库的账号对应的密码;
  • -d,–db:代表连接的数据库;
  • -c,–collection:代表连接数据库中的集合;
  • -f, –fields:代表导入集合中的字段;
  • –type:代表导入的文件类型,包括csv和json,tsv文件,默认json格式;
  • –file:导入的文件名称
  • –headerline:导入csv文件时,指明第一行是列名,不需要导入;

实例演示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看集合中的数据
> db.bike_bak.find()
{ "_id" : ObjectId("59e8c27804390e04a063159d"), "lat" : 39.9571954199, "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "source" : "ofo", "lng" : 116.3926501736 }

# 删除集合中的数据
> db.bike_bak.remove({"bikeId" : "pgdAVg"})
WriteResult({ "nRemoved" : 1 })

# 查看集合是否包含数据
> db.bike_bak.find()

# 导入数据
[root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoimport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike_bak --type=json --file bike.csv
2017-10-25T11:59:51.020+0800 connected to: localhost:27030
2017-10-25T11:59:51.030+0800 imported 1 document
# 检查数据是否导入成功
> db.bike_bak.find()
{ "_id" : ObjectId("59e8c27804390e04a063159d"), "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "lat" : 39.9571954199, "lng" : 116.3926501736, "source" : "ofo" }

MongoDB 导出 mongoexport 和导入 mongoimport
https://flepeng.github.io/041-MongoDB-MongoDB-导出-mongoexport-和导入-mongoimport/
作者
Lepeng
发布于
2021年6月6日
许可协议