Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)

Posted 二兵兵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)相关的知识,希望对你有一定的参考价值。

Centos下通过yum安装步骤如下:

      声明:相对比那些用源码安装,少了配置和新建log和data目录,这种简单粗暴,

1,创建仓库文件,
      vi /etc/yum.repos.d/mongodb-org-3.4.repo
2,复制下面配置,保存退出
     [mongodb-org-3.4]
     name=MongoDB Repository
   baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
   gpgcheck=1
   enabled=1
   gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
 3,yum安装
yum install -y mongodb-org

4,修改配置文件,别的机器也能访问,不止是 127.0.0.1
vi /etc/mongod.conf -----》bind_ip 默认是127.0.0.1 修改为 0.0.0.0

5,启动,停止
service mongo start, service mongo stop

6,日志目录位置 ---》 cat /var/log/mongodb/mongod.log
数据库文件 ----》 cat /var/lib/mongo

7,卸载 mongo ----> yum erase $(rpm -qa | grep mongodb-org)

连接mongo的可视化工具我用的是--robo3T 注意的是MongoVUE不支持mongodb3版本的

 

mongodb 常用命令:

  查看数据库
    > show dbs
  使用数据库
     > use database-name
   查看表
     > show tables
   查询数据
      > db.table-name.find({})
   查询条件
      > db.table-name.find({name:zhangsan})
建立索引
> db.table-name.ensureIndex({‘name‘:1}) 1为升序,-1为降序
复合索引
> db.table-name.ensureIndex{{‘name‘:1,‘age‘:1}} 只查询name会索引。如果只查询age不会用到索引,如果想用索引前面必须有N个索引列
查看索引是否建立
> db.table-name.getIndexes()
删除索引
> db.table-name.dropIndex({‘name‘:1})
管理索引,查看所有索引:
> db.system.index.find()

 

mongo 导入 json 或者csv 做法

声明:4G的 .sql文件(20050144条数据)导入mongodb 总共时间为 28分钟 + 25分钟 + 15分钟
①,28分钟: 在linux 中 source ./.sql目录 导入数据库
②,25分钟: 用Navicat for mysql 导出格式为csv 或者json
③,15分钟: 用mongo自带的mongoimport命令 上传csv或者json

前2步傻瓜式操作,唯一注意的是②步:
json格式情况下: 4G大小的.sql文件,如果用navicat转为json大小为11G,11G的json上传mongo会 ‘/a’错误,实验200MB的没有问题
csv格式情况下: 4G大小的.sql文件,如果用navicat转为csv大小还是4G,其中csv会是乱码,不用管,直接上传mongo没有问题,
navicat导出的时候选择一定选择 ’包含列的标题‘ 后期上传名mongdb时候可以少填写参数为列
导入命令如下:
json: 
            mongoimport --db  table-name  --collection table-name  --file /test.json   
     csv:
mongoimport --db table-name  --collection table-name --type csv --headerline --ignoreBlanks  --file /test.csv  --numInsertionWorkers 4
导出命令如下:
      json:

            mongoexport  --db  table-name  --collection table-name  -o /test.json

      csv: 

mongoexport  --db  table-name  --collection table-name --csv -f id,province,city -o /test.json
--csv 指要要导出为csv 格式,导出csv之后必须指明导出的列
-f 指明需要导出哪些列
    
参数说明
--db 指明使用的库, 本例中为” table-name
          --collection 指明要导出的表, 本例中为”table-name”
--type 指明导入的类型,默认的为json
--headerline 仅适用于导入csv,tsv格式的数据,表示文件中的第一行作为数据头
--ignoreBlanks 忽略空白符
--file 文件的位置
--numInsertionWorkers 为了提高mongo的插入效率,采用mongodb推荐的(numInsertionWorkers)多线程操作。本质来说,就是将insert任务,拆分成多个线程来做。





























































以上是关于Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)的主要内容,如果未能解决你的问题,请参考以下文章

Centos6.5 x64简单安装MongoDB

Centos6.5安装配置mongodb

CentOS6.5下安装Mongodb3.2.4

CentOS6.5_X64下安装配置MongoDB数据库

Centos6.5 MongoDB安装以及php_mongo扩展的安装

Centos6.5搭建mongodb分片