美文网首页
十、MongoDB数据迁移工具介绍

十、MongoDB数据迁移工具介绍

作者: 转身丶即天涯 | 来源:发表于2022-01-09 12:40 被阅读0次

    前言

    在工作中偶尔会遇到迁移数据等操作。比如如下场景:

    • 数据库备份(容灾)
    • 导出服务端数据(统计)
    • 将服务端数据放入本地(搭建开发环境)
    • 跨网段传输数据(网络不通)

    不管你出于什么原因,一定要学一写数据迁移操作。

    迁移工具

    MongoDB提供了两个工具,分别用于数据的导出和导入:

    • mongoexport
    • mongoimport

    这两个工具可以将数据库中的集合导出为CSV或者JSON格式的文件。
    注意:迁移单位是”集合“,不是数据库、也不是某个文档。

    这两个工具是命令行工具,并没有可视化界面。
    接下来,我们需要了解这两个工具的参数,来对工具有一个宏观上的了解。

    参数说明

    命令行中输入如下命令,可以查看mongoexport的参数说明。

    mongoexport --help

    image.png

    好在参数不多,我们可以逐项了解。

    • general options(常见选项):
      • --help: 帮助文档
      • --version: 查看工具版本号
      • --config=: 配置文件的路径
    • verbosity options(细节选项):
      • -v, --verbose=<level>: 详细的日志输出
      • --quiet: 隐藏所有输出。
    • connection options(连接选项):
      • -h, --host=<hostname>: 要连接的Mongo服务器地址
      • --port=<port>: Mongo服务端口号,可以和--host参数一同使用,例如,--host hostname:port
    • ssl options(SSL选项):
      • --ssl: 通过SSL协议连接Mongo,前提是Mongo需要开启SSL
      • --sslCAFile=<filename>: 包含根证书的.pem文件
      • --sslPEMKeyFile=<filename>: 包含秘钥和证书的.pem文件
      • --sslPEMKeyPassword=<filename>: 解密sslPEMKeyFile文件的密码
      • --sslCRLFile=<filename>: 没理解
      • --sslFIPSMode: 使用FIPS模式替代openssl库
      • --tlsInsecure: 绕过服务器证书验证
    • authentication options(认证选项):
      • -u, --username=<username>: MongoDB用户名
      • -p, --password=<password>: MongoDB密码
      • --authenticationDatabase=<database-name> : 需要账号密码校验后连接的数据库
      • --authenticationMechanism=<mechanism>: 没理解
      • --awsSessionToken=<aws-session-token>: 通过亚马逊IAM(身份角色)的令牌
    • kerberos options(不安全网络环境选项):
      • --gssapiServiceName=<service-name>: 当使用GSSAPI或者Kerberos协议时的服务名。
      • --gssapiHostName=<host-name>: 当使用GSSAPI或者Kerberos协议时的主机名。
    • namespace options(命名空间选项):
      • -d, --db=<database-name>: 数据库名称
      • -c, --collection=<collection-name>: 集合名称
    • uri options(连接字符串选项):
      • --uri=<mongodb-uri>: 连接mongo时使用的字符串
    • output options(输出选项):
      • -f, --fields=<field>[,<field>]*: 导出的字段名称,如果有多个字段用逗号隔开
      • --fieldFile=<filename>: 没理解。
      • --type=<type>: 导出文件的格式,支持json或者csv
      • -o, --out=<filename>:导出的文件名
      • --jsonArray: 输出为json数组格式,而非每行一个文档对象
      • --pretty: 输出时格式化json
      • --noHeaderLine: 导出为csv格式时,是否包含字段名作为csv第一行(不加此参数是带字段名的)
      • --jsonFormat=<type>: 没理解
    • querying options(查询选项):
      • -q, --query=<json>: 支持json格式的筛选条件,导出筛选后的数据
      • --queryFile=<filename>: 存放json格式的筛选条件,从文件中读取查询条件。
      • --readPreference=<string>|<json>: 没理解
      • --forceTableScan: 没理解
      • --skip=<count>: 跳过前N个文档
      • --limit=<count>: 导出N个文档
      • --sort=<json>: 对导出的数据排序,例如 '{x:1}'
      • --assertExists: 如果指定此参数,在集合不存在时会报错

    mongoimport --help

    image.png

    mongoimport的大部分参数和mongoexport是一样的,我们仅看一下不一样的部分即可。

    • input options(输入选项):
      • -f, --fields=<field>[<field>, ]*: 限定导入的字段,如果有多个字段用逗号隔开
      • --fieldFile=<filename>: 可以将字段名写入文件中,然后通过此文件来指定导入的字段名
      • --file=<filename>: 从文件中导入数据到数据库
      • --headerlien: 用文件的第一行作为字段名称,仅导入csv文件时可用
      • --jsonArray: 将输入的数据源看做json数组
      • --parseGrace=<grace>: 输入数据类型错误时,4种模式可选,"autoCast"(自动转换), "skipField"(跳过字段), "skipRow"(跳过此文档/行),"stop"(停止,默认选项)
      • --type=<type>: 数据文件的格式,csv、json、tsv
      • --columnHaveType: 没看懂
      • --legacy: 校验json格式是否合法
      • --useArrayIndexFields: 没看懂
    • ingest options(摄入选项):
      • --drop: 插入数据前先删除集合
      • --ignoreBlanks: 忽略csv文件中的空行
      • --maintainInsertionOrder: 保证文档插入顺序
      • --numInsertionWorkers=<number>: 并发插入,指定线程数量
      • --stopOnError: 发生错误时停止
      • --mode=[insert|upsert|merge|delete]: 仅插入,跳过匹配的文档。插入新文档,或替换已经存在的文档。插入新文档,或修改已经存在的文档。删除匹配的文档。

    相关文章

      网友评论

          本文标题:十、MongoDB数据迁移工具介绍

          本文链接:https://www.haomeiwen.com/subject/imrucrtx.html