前言
我们有个老项目,以前用户量很大,现在没多少了,但是架构是以前的,aws的mongodb集群一个月的费用也不少,所以计划重构代码,我这边负责的是将mongodb的数据转到mysql,用过java写过转换程序,速度太慢,停服时间只有两个小时,尝试过阿里的datax,同步还可以,还是达不到我们的需求,于是我使用了mongodb导出csv文件到mysql导入的方法
mongo导出csv文件
我刚开始用的办法是mongoexport,速度还可以,可是开始导入到mysql的时候才发现这种办法真的是差点意思! 为什么呢,mongoexport不能指定delimiter,它是标准的分隔符”,””。这就让我们很苦恼,因为mongodb的很多表里有对象属性,比如有个content字段,它的值是{”name”:”zhanghua”,”age”:18}。注意到了么,这里有个”,” 而mysql的判断是不是另外的字段就是通过,来做的split。
万般无奈下(主要没找到好的方法),我决定写一个node脚本来来将mongodb里面的数据转换成我想要的csv格式
将csv文件导入到mysql中
这个就简单,但是需要改的设置也不少,说一下最重要语句就行了
我本地测试用的datagrip,在dg上用这个直接测就行了