• PCB MongoDB 数据库 Collection集合导出与导入


    由于一直以来用微软可视化图形界面习惯了,而MongoDB是命令式操作,而用系统自带CMD操作不方便,

    这里介绍一款CMD的替代品,大小100多M。

    Cmder工具下载  https://github.com/cmderdev/cmder/releases

    接下来操作全部用Cmder工具来执行指令操作演示

     一.Collection集合导出与导入工具介绍:

         NoSQL中Collection集合对应SQL的的关系相当于表的概念,即对表的导出与导入。

            导出集合数据工具 mongoexport.exe     

            导出集合数据工具 mongoimport.exe    

            

    二.准备阶段

          1.启动 :Cmder.exe (没安装的话,用CMD一样可以)

           2.输入:D:    进行MongoDB安装盘

           3.输入:cd D:Program FilesMongoDBServer4.0in  进入MongoDB安装目录

           

    三.Collection集合导出--Json格式

    mongoexport -d pcbdb -c ppeflow -o "e:dbppeflow.json"

        参数说明:

        -d pcbdb                               数据库名

        -c ppeflow                            集合名(相当SQL中的表名)

        -o "e:dbppeflow.json"         输出路径

        --typeo json                         默认json输出,当然加入此参数入

            

    四.Collection集合导出--CSV格式

     mongoexport -d pcbdb -c ppeflow --type csv -f "_id,techname,orderid" -o "e:dbppeflow.csv"

        参数说明:

        -d pcbdb                               数据库名

        -c ppeflow                            集合名(相当SQL中的表名)

        --type csv                           输出格式(注意type前面有2个-)

        -f "_id,techname,orderid"     输出字段名(字段与字段之间用,分隔)

        -o "e:dbppeflow.csv"         输出路径     

    五.Collection集合导入--Json格式

     mongoimport.exe -d pcbdb -c ppeflow1 --file "e:dbppeflow.json"

        参数说明:

        -d pcbdb                               数据库名

        -c ppeflow1                           集合名(当不存在时,自动创建)

        -o "e:dbppeflow.json"         导入Json路径

        --typeo json                         默认json输入格式,当然加入此参数入

    六.Collection集合导入--CSV格式

    mongoimport -d pcbdb -c ppeflow2 --type csv -f "_id,techname,orderid" --file "e:dbppeflow.csv"

        参数说明:

        -d pcbdb                               数据库名

        -c ppeflow2                           集合名(相当SQL中的表名)

        --type csv                             输出格式(注意type前面有2个-)

        -f "_id,techname,orderid"      输入字段名(字段与字段之间用,分隔)

        --file "e:dbppeflow.csv"        读取CSV路径(注意file前面有2个-)     

    -headerline               除去首行的字段行(此例子没加此参数,原因报错,未找到解决方法)

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

     八.凝问解答

        1.导出的json与CSV是什么文本编码类型是什么格式?

             导出的文本编码类型是(encoding)UTF8. 

         2.用Excel打开CSV是乱码,怎么解决呢?

                

                方法1:用NotePad打开,然后点击菜单【编码】->【转为ANSI编码】,再用Excel打开即可。

                方法2:用Excel引用文本的方式加转换,参考https://jingyan.baidu.com/article/48a4205705c098a925250455.html

          3.导入CSV到MongoDB去掉首行的字段行?

              按官方文档:在导入CSV参数中加入-headerline 即可

    mongoimport -d pcbdb -c ppeflow2 --type csv -headerline -f "_id,techname,orderid" --file "e:dbppeflow.csv"

             但实际在笔者实测中,目前没解决.报如下错误,

              4.MongoDB导出CSV可以指定字段导出,那么输出Json文件是否能指定字段导出?

                     不能,导出的Json文件是整个集成中所有字段.

              5.MongoDB导出CSV还是Json格式,如何选择?

                   通过以下对比,请自行选择.

                  大小对比: CSV占用字节数少        优势

                                      JSON占用字节数多      

                 深层次结构对比:CSV如果对于大于2层嵌套结构树节构查看不明确。          优势

                                                 JSON深层次结构用Json树结构查看器对结构定义清晰,

                    低层次结构对比:CSV如果对于<=2层嵌套结构树节构查看定义清晰,         平局

                                                   JSON低层次结构用Json树结构查看器对结构定义清晰,   平局                          

                    字段对比:CSV可选字段输出,      优势

                                        JSON全部字段输出

                     反序化列:CSV不支持                       

                                        JSON支持                      优势  

          6.MongoDB导入CSV是否指定字段输入?

               不行,导入CSV并不可以指定字段导入,比如CSV中有3个字段,导入到MongoDB中不能只导入指定的2个字段

               而这里的指定字段名,是CSV文件中每个字段指定一个字段名,导入到MongoDB中,

               如果CSV有3个字段,而导入的字段名只有2个,那CSV中第3个字段由MongoDB默认fled3字段

             (最好CSV有多少个字段,导入的字段名就有多少个,保持字段名数量与字段数量匹配,并且顺序一致

         7.MongoDB导出的Json后,然后再导入,导不进去?

              由于导出JSON会将主键_id 即OjbectId,一起输出来的,如果再导入数据库中的的话,肯定会出现主键冲突

      最佳解决方法:导入到另外一个集合,然后再通过2个集成的唯一主键对比,再进行突处理---冲突不替换,还是冲突替换)   
    
    

     后续对MongoDB的探索学习,主要是基于SQL已有的功能,在MongoDB也应该有的功能进行相应的实现,

    后续更新内容:NoSQL与SQL 增删改查的语句区别,主键索引,主从库复制,备份还原,请求数据与性能监控,Log日志,大尺寸文件GridFS.

     

  • 相关阅读:
    Project Euler 99:Largest exponential 最大的幂
    Project Euler 98:Anagramic squares 重排平方数
    Project Euler 97 :Large non-Mersenne prime 非梅森大素数
    Project Euler 96:Su Doku 数独
    Project Euler 95:Amicable chains 亲和数链
    Project Euler 94:Almost equilateral triangles 几乎等边的三角形
    Project Euler 93:Arithmetic expressions 算术表达式
    Project Euler 92:Square digit chains 平方数字链
    Project Euler 91:Right triangles with integer coordinates 格点直角三角形
    Project Euler 90:Cube digit pairs 立方体数字对
  • 原文地址:https://www.cnblogs.com/pcbren/p/9536009.html
Copyright © 2020-2023  润新知