datax数据迁移mysql到mongo

不写版本的文章都是耍流氓
MongoDB4.2.8
mysql 5.7
最近有个需求是把mysql的多余数据迁移到mongo
docker 安装MongoDB4.2.8
1下载镜像
docker pull mongo:4.2.8
2启动
docker run --name mongo-master -p 27017:27017 -v /etc/localtime:/etc/localtime:ro -v /home/mongo/db:/data/db -d mongo:4.2.8 --auth
设置账号密码
docker exec -it mongo /bin/bash
mongo
use admin
db.createUser({user: “root”, pwd: “123456”, roles: [{role: “root”, db: “admin”}]})
db.auth(‘root’,‘123456’)

use stpnew
db.createCollection(“att_record”)
db.createUser({user:“att”,pwd:“123456”,roles:[{role:‘dbOwner’,db:‘stpnew’}]})
datax下载地址
https://github.com/alibaba/DataX
自定义sql ,根据条件转移相关数据 只要配置json就行

{
	"job": {
		"setting": {
			"speed": {
				"channel": 1
			}
		},
		"content": [{
			"reader": {
				"name": "mysqlreader",
				"parameter": {
					"username": "root",
					"password": "12345",
					"connection": [{
					 "querySql": [
                                    "SELECT id,user_id, IFNULL(number,'') AS number ,username,parkinglot_id,swipe_time,swipe_type,CONCAT(lng) AS lng ,CONCAT(lat) AS lat,ip,device_no,ver,createtime,IFNULL(address,'') AS address FROM att_record  WHERE address IS  NULL;"
                                ],
						
						"jdbcUrl": [
							"jdbc:mysql://127.0.0.1:3306/stpnew"
						]
					}]
				}
			},
			"writer": {
				"name": "mongodbwriter",
				"parameter": {
					"address": [
						"localhost:27017"
					],
					"userName": "att",
					"userPassword": "123456",
					"dbName": "stpnew",
					"collectionName": "att_record",
					"column": [{
							"name": "id",
							"type": "int"
						},
						{
							"name": "user_id",
							"type": "int"
						},
						{
							"name": "number",
							"type": "string"
						},
						{
							"name": "username",
							"type": "string"
						},
						{
							"name": "parkinglot_id",
							"type": "int"
						},
						{
							"name": "swipe_time",
							"type": "date"
						},
						{
							"name": "swipe_type",
							"type": "int"
						},
						{
							"name": "lng",
							"type": "String"
						},
						{
							"name": "lat",
							"type": "String"
						},
						{
							"name": "ip",
							"type": "string"
						}
						,
						{
							"name": "device_no",
							"type": "string"
						}
						,
						{
							"name": "ver",
							"type": "string"
						}
						
						,
						{
							"name": "createtime",
							"type": "date"
						}
						,
						
						{
							"name": "address",
							"type": "string"
						}
					],
					"writeMode": {
						"isReplace": "true",
						"replaceKey": "id"
					}
				}
			}
		}]
	}
}

执行

python2 bin/datax.py job/job.json
datax的程序使用Python2写的如果用3的话需要修改脚本
结果

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天M雨天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值