mongodb使用的一些问题(mongoimport,mongoexport)(第一部分,太长了分开写骗点访问量)

昨天在做mongodb导入的一些操作,遇到了这样那样的问题,大家也知道有些东西查了很费劲,说的对还是不对什么的

以上都是废话,我把我遇到的一些问题总结一下,特别是有些问题查了半天好像没人能解决,有人提问无人回答。希望能

对大家带来帮助。

首先,我们的工作是定期把别的部门推送过来的csv文件导入到mongodb库中,然后提供查询的功能显示在页面当中,一开始

会有18个G的文件2亿条数据需要进行导入,后期每天就只有200W条,后期就很好办了,写了个定时任务,io流读写,往数据

库存,有人可能会问为什么后期不用mongoimport,主要是我们这边需要日志记录一下,mongodb服务器不在我们这边,只

能通过读写之间进行一个日志的记录。前期2亿条数据这个很烦,本来打算io流那么搞,然后能做日志记录避免哪条数据导入失

败,后来跑起来发现得运行3天才能导入完成,而这期间上线还要接受每天的csv进行导入,真的很坑,没办法,这2亿条客户

数据就只能用mongodb的导入指令了,不过讲道理速度真的快,我导入50M的文件做测试就用了几秒。

干货来了,首先我就展示下我的mongoimport指令,当然我只展示本地的,要是想了解下更详细的,看官网或者度娘吧,我

这版主要是跟大家说下可能会遇到的问题:

mongoimport --db test --type tsv --headerline --file D://software//mongoDb//data//db//custview_20180402.csv

--db:是指定你的数据库名

--type:是指定你导入的文件类型,可以使csv或者tsv(这两种文件格式我下边会有相关问题说明一下)

--headerline:这个意思是文件中的首行根据分隔符作为存入的“键”,就是字段名,文件中要是全是数据,那就不用这个,

换成--fields还是什么来着(-f  "_id,cont_id,company,label,upd_date")具体怎么改我忘了,百度百度哈,要是报错了注意

空格,命令失败提醒你少个;什么的都有可能是空格的问题

--file当然就是指定文件路径了

还有其他的,自己查一下!有些导入还需要权限账号密码什么的

你以为光执行这个命令就万事大吉了么,太天真了!

我经历了一堆问题,其中比较让我抓头的就是下面要介绍的:

这里的csv文件格式就是这样: 小明,22,学生,阅读     ----这种以逗号分隔的数据形式,mongodb在导入时会以逗号为分隔

把这个整体性的数据拆分了,变成Nosql数据库中一个个字段列,键(列名)的名称就是根据你的headerline后者是fields进行设

置的。

要注意的是!!!:csv文件你双击打开一般都是用excel打开的,这个时候也只是显示一下数据,可是如果要做修改,千万别

再excel里瞎T-M改,改完屁用没有,mongodb他T-M不认识,不会分的,我就在这里改完,然后导入,看了一下午都没分开

存储,要用文本编辑器ediplus、notepad++这种打开在里面进行修改,这样才是保持了他的内容格式。特别要说明的一点,

在编辑之后建议看一下编码格式,mongodb用的是utf-8,你需要把格式变成


这样遇到中文也不会出现问题了,如果像我们一样在服务器上直接拿到文件在linux上操作的话,那就在linux上修改好编码格

式,如果不改。。。自己难受去吧,中文都是空。。。lol,这里要提下windows默认的分隔符是“,”逗号,我即便是按着

网上说的改了分隔符好像也没什么卵用的。。。csv反正依然以逗号做分隔。。后面也就产生了别的问题。。。见(二)。

点个赞吧,还没人给我点赞,我好惨。。。


  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值