当前位置: 首页 > article >正文

MongoDB 数据库数据导入 - 关于如何使用 csv 导入数据的命令方法、图形界面可视化导入方法

序言

兴趣使然,突发奇想,想到了就写,就当打发时间了。

一、使用 csv 导入数据的命令方法

csv文件路径问题,绝对路径和相对路径都可以

方法1

type 没有=号,也是可以的,空格自动识别

测试表.csv 文件导入到 mongodatabase 库,mycollection 集合中,导入时必须指定列名称 (如果 csv 文件第一行是列名称,也会被当成数据导入到数据库中),这个方法在初始化 mongo 数据库集合时非常不好,除非是补充集合数据,就另当别论了

使用 ip:端口号 用户密码 连接mongoDB

mongoimport --host xxx.xxx.xx.xxx:9527 -u myuser -p 123456 -d mongodatabase -c mycollection --type csv --fields "name,sex,age" --file ./测试表.csv

–fields 指定导入到集合的字段名,如 name、sex、age 如果集合内存在这三个字段,那么csv 文件中的三个列数据会一一对应,比如 测试表.csv 内的测试数据如下所示:

namesexage
张三20
李四23
小明18

(注意如果是补充集合的数据,那么 csv 文件内的 name、sex、age 行数据头,需要删除整行)只需要如下数据:

张三20
李四23
小明18
张三20
李四23
小明18

方法2 (推荐该导入命令方法,初始化MongoDB集合数据)

导入数据时,指定字段类型进行导入 (注意:csv文件第一行不要有字段名称)

演示模板:

mongoimport --host xxx.xxx.xx.xxx:9527 -u myuser -p 123456 -d mongodatabase -c mycollection --type csv --columnsHaveTypes --fields "name.string(),sex.string(),age.int32(),password.int32()" --file ./测试表.csv

这个可以指定导入的字段数据格式,如 name 和 sex 字段的数据可以指定为 字符串格式 string,age 字段的格式可以指定为 NumberInt()

有一个问题是如果数据内存在数字长度超过10个的数据,那么就会报如下错误:

2023-04-21T18:23:45.466+0800    Failed: type coercion failure in document #0 for column 'password', could not parse token '12345678901' to type int32
2023-04-21T18:23:45.466+0800    imported 0 documents

在这里插入图片描述
所以需要把 int32() 改为 int64(),就会自动转换数字长度超过 10 个的数据为 NumberLong()

演示模板:

mongoimport --host xxx.xxx.xx.xxx:9527 -u myuser -p 123456 -d mongodatabase -c mycollection --type csv --columnsHaveTypes --fields "name.string(),sex.string(),age.int64(),password.int64()" --file ./测试表.csv

在这里插入图片描述

方法3

将测试表.csv文件导入到 mongodatabase 库,mycollection 集合中,使用 --headerline 参数,指定使用csv文件第一行内的字段名,作为文档的字段名称

mongoimport --host xxx.xxx.xx.xxx:9527 -u myuser -p 123456 -d mongodatabase -c mycollection --type csv --headerline --file ./测试表.csv

(作为初始化mongodb 数据库,稍微不错,有一点要注意,如果是纯数字的字段数据,那么会被自动识别为 NumberInt() 格式,比较长的会被识别为 NumberLong()

比如下面是笔者使用 Studio 3T 查看的测试数据类型:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
笔者经过数轮 mongoimport 工具导入测试,测试得出,如果数字长度是小于等于10的数据,会自动转换为 NumberInt() 格式,如果是大于10的数字长度,就会转换为 NumberLong()

方法4 (这个我直接引用参考链接的说法)

不带-c参数导入数据,会使用文件名做为集合名,导入后集合名称为 czg_t2
mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg --type=csv --headerline /root/mongo_export/czg_t2.csv

这个一般都会指定导入的集合,也就不多说。


参考链接

1. MongoDB mongoimport 从csv导入数据指定字段类型

二、图形界面可视化导入方法

使用Studio 3T可视化mongodb 连接工具在这里插入图片描述

如果是用其导入csv 文件数据,大概率会遇到中文乱码问题,还有字段格式问题,比如数字会大概率转换为字符串数字,导出 csv 文件时,时间格式会有问题,自动给你转换成一个 UTC 世界时间,而不是北京时间(东八区时区)

中文乱码解决方法传送门:
Windows10 Excel 如.csv文件编码问题转为 UTF-8 编码方法,解决中文乱码问题(如MongoDB导入 CSV 文件中文乱码问题)、解决科学计数显示问题


三、按时间过滤导出(随手一记)

传送门:

mongoexport带过滤条件导出


http://www.kler.cn/a/14988.html

相关文章:

  • 从训练数据视角:看机器学习和深度学习的大三范式
  • 太为难我了,阿里面试了7轮...
  • python内置数据结构常见操作易错总结[更新ing...]
  • 一文看懂低代码,5分钟从入门到原理全搞定
  • 【地铁上的设计模式】--创建型模式:建造者模式
  • 线程同步方式之三信号量
  • 电脑高效率工作、学习工具软件推荐
  • pwm调节亮度
  • Springboot +Flowable,通过代码绘制流程图并设置高亮
  • 车联网OTA安全实践
  • 2023年全国最新保安员精选真题及答案62
  • 计算机专业VB系统,有论文,源代码
  • 【Linux常见指令以及权限理解】基本指令(2)
  • Python自动化测试框架之unittest使用详解
  • 如何使用python网络爬虫批量获取公共资源数据
  • 用梯度下降的方式来拟合曲线
  • 使用virsh远程连接主机遇到的问题
  • Java版本+企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势
  • 矢量、栅格、瓦片地图傻傻分不清
  • 封装了一个echarts图全屏放大的功能