Mongo导出mongoexport和导入mongoimport介绍

摘要:
最近,摩拜单车和ofo单车爬行的数据需要存储在csv文件中。由于所设计的程序没有编写和存储csv文件的方法,因此它继续存储在MongoDB中,以便变得懒惰。

 最近爬取mobike和ofo单车数据,需要存储在csv文件中,因为设计的程序没有写存储csv文件的方法,为了偷懒所以就继续存储到了MongoDB中。恰好MongoDB支持导出的数据可以是csv文件和json文件,所以下面介绍下MongoDB mongoexport和mongoimport方法;

一、导出工具mongoexport 简介,通过帮助先了解下mongoexport的功能参数

[root@iZ2ze4b308vd83fulq9n7iZ ~]# 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。

实例:

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

> 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两种类型的数据;

#导出类型为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

查看下结果是否是我们两种不同的结果集;

1.导出csv类型;

Mongo导出mongoexport和导入mongoimport介绍第1张

2.导出json类型;

Mongo导出mongoexport和导入mongoimport介绍第2张

二、导入工具mongoimport 简介,通过帮助先了解下mongoimport的功能参数

[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文件时,指明第一行是列名,不需要导入;

实例演示:

#首先查看集合中的数据
> 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" }

 测试过程中发现--headerline -f bikeId 同时存在会报错,提示不兼容,目前不知道如何处理。

免责声明:文章转载自《Mongo导出mongoexport和导入mongoimport介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇还原数据库:The backup set holds a backup of a database other than the existing database……SpringCloud 整合 Python 服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDb问题集

一、解决SpringBoot MongoDB插入文档默认生成_class字段问题  @Configuration public class SpringMongoConfig{ @Bean public MongoTemplate mongoTemplate() throws Exception { //remove _clas...

jmeter源码导入eclipse二次开发csv data set config实现从指定行开始读取)

一、Ant安装   1.官网去下载ant工具,下载地址:http://ant.apache.org/bindownload.cgi   2.下载后将ant进行解压,配置ant的环境变量,需要设置三个地方ant_home=d:/apache-ant-1.9.7path=%ANT_HOME%in;   classpath=%ANT_HOME%lib;   3....

mongodb 安装

a.安装   本人下载的是windows版本的3.2.1mongo,路径为https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.2.1-signed.msi   或者直接去官网也可以http://www.mongodb.org/downloads   不过需要注意的是mo...

Mongodb查询

https://www.cnblogs.com/t2xingzhe/p/3555268.html 数据库查询 db.ser.find()#select * from ser;只输出id和time字段,第一个参数为查询条件,空代表查询所有db.ser.find({"name" : scott})#select * from ser where name='s...

MongoDB GridFS 存储大文件

我们经常会遇到这样的场景:上传/下载文件。 有两种思路可以解决这个问题: (1)将文件存储在服务器的文件系统中; (2)将文件存储在数据库中。 如果我们选择(2),那么我们可以使用MongoDB GridFS 用于存储大小超过 16MB 的文件(文档,压缩文件,音视频,软件)。 一、MongoDB GridFS 介绍 MongoDB GridFS 是一个分...

MongoDB出现CPU飚高,如何强制停止正在执行的操作

如果发出了一个执行耗时很长的任务给MongoDB服务器,客户端强制终止会导致任务依然在服务器端执行。 这时MongoDB提供了查询和管理正在执行任务的方式。 // db.currentOp() 获得当前的所有`in progressing`的操作,包括insert/query/update/remove/getmore/command等 > d...