DataX的使用

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,

支持的db类型有 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能

工作机制

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通

服务对象

dataX面向客户端操作,大多数适用于非及时数据收集处理,canal适用于系统级的数据同步工作,及时性、稳定性更好

目前有免费版(开源)和商业版(收费)
源码地址
https://github.com/alibaba/DataX

安装

安装前需有jdk、python开发环境
github上下载地址

https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/20220530/datax.tar.gz
datax 支持Python3需要修改替换datax/bin下面的三个python文件,替换文件地址:https://github.com/WeiYe-Jing/datax-web/tree/master/doc/datax-web/datax-python3

鄙人地址

链接:https://pan.baidu.com/s/1-itgL2jsHgKO-HXAgpFv2Q 
提取码:tu4o
datax/bin 下已替换成python3的文件

测一下是否成功

D:\DataX\datax\bin>python datax.py

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.

要是有乱码,命令行切换一下UTF-8编码

D:\DataX\datax\bin>CHCP 65001
Active code page: 65001

使用

  1. 新建数据库
127.0.0.1
root
123456

库名:datax
  1. 新建2张数据表
table1
CREATE TABLE `table1`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


table2
CREATE TABLE `table2`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

table1中新增3条数据,table2为空表

INSERT INTO `table1` VALUES (1, '大黄');
INSERT INTO `table1` VALUES (2, '旺财');
INSERT INTO `table1` VALUES (3, '发财');
  1. 编写工作文件
    D:\DataX\datax\job目录下,新建文件work1.json
    任务目的,将数据库中table1表数据,同步到table2中国=
{
    "job":{
        "content":[
            {
                "reader":{
                    "name":"mysqlreader",
                    "parameter":{
                        "username":"root",
                        "password":"123456",
                        "column":[
                            "id",
                            "name"
                        ],
                        "connection":[
                            {
                                "table":[
                                    "table1"
                                ],
                                "jdbcUrl":[
                                    "jdbc:mysql://localhost/datax?characterEncoding=utf8"
                                ]
                            }
                        ]
                    }
                },
                "writer":{
                    "name":"mysqlwriter",
                    "parameter":{
                        "username":"root",
                        "password":"123456",
                        "column":[
                            "id",
                            "name"
                        ],
                        "connection":[
                            {
                                "table":[
                                    "table2"
                                ],
                                "jdbcUrl":"jdbc:mysql://localhost/datax?characterEncoding=utf8"
                            }
                        ]
                    }
                }
            }
        ],
        "setting":{
            "speed":{
                "channel":1,
                "byte":104857600
            },
            "errorLimit":{
                "record":10,
                "percentage":0.05
            }
        }
    }
}
  1. 执行命令
python datax.py ../job/work1.json

数据已同步完成

2022-09-07 14:27:45.002 [job-0] INFO  JobContainer -
任务启动时刻                    : 2022-09-07 14:27:34
任务结束时刻                    : 2022-09-07 14:27:45
任务总计耗时                    :                 10s
任务平均流量                    :                0B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   3
读写失败总数                    :                   0

由于table2表中有主键,再次执行下此命令会报错,再执行一次,看下失败的效果
image.png

更多work.json的编写,详见官方文档

datax-web

很多时候,使用数据同步的人,往往不是技术人员,这时,需要web后台的引入,才能更便捷的工作

DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的操作界面

并且提供了定时执行任务的功能
image.png

本文仅介绍Windows下使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值