DataX数据同步

背景:

业务需求中,经常会有同步各种系统或者数仓的数据到自己的库进行使用。比如从oracle同步到自己的mysql,自己写代码如果数据量大需要考虑多线程并发等。最近使用了阿里的Datax项目,操作简单并高效。

Datax

  1. Datax概述&支持的库
    DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

2.DataX运行流程

3、部署使用

官网:https://github.com/alibaba/DataX

bash 复制代码
3.1解压
tar -zxvf datax.tar.gz -C /opt/module/
3.2自检,执行如下命令。成功会输出整个任务的结果
python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json

3.3 json文件描述讲解,以mysql为例

java 复制代码
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",  #reader名称,固定,不可修改
                    "parameter": {
                        "column": [ #同步的字段
                            "id",
                            "name"
                        ],
                        "where": "id>=3",# 查询条件,也可以不带
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/test" #读的库
                                ],
                                "table": [
                                    "test" #表
                                ]
                            }
                        ],
                        "password": "123456", #密码
                        "splitPk": "",
                        "username": "root" #用户
                    }
                },
                #写的库
                "writer": {
                    "name": "mysqlwriter", #reader名称,固定,不可修改
                    "parameter": {
                       "username": "root", #数据库用户
                        "password": "123456",#数据库密码
                        "connection": [
                            {
                                "table": [
                                    "test1" #目标表
                                ],
                                "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test2?useUnicode=true&characterEncoding=utf-8"
                            }
                        ],
                        "column": [ #对应字段,也可以*代表全部字段
                            "id",
                            "name"
                        ],
                        "writeMode": "replace"  #insert into(insert) replace into 
                        #replace 或者 update               
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1 #并发数
            }
        }
    }
}

3.4 运行

java 复制代码
python bin/datax.py job/test.json
相关推荐
华仔啊4 分钟前
MyBatis-Plus 不只是简化CRUD!资深架构师总结的15个高阶用法
java·后端·mybatis
Python私教10 分钟前
第一个Python金融爬虫
爬虫·python·金融
ZHANG13HAO17 分钟前
通过 MQTT 命令控制 RV1106 的 WebRTC 推流启停” 及 “30 分钟无命令自动停止”
linux
yolo_guo20 分钟前
opencv 学习: QA_01 什么是图像锐化
linux·c++·opencv·计算机视觉
清清&30 分钟前
【Linux】冯诺依曼体系结构和操作系统的理解
linux·运维·服务器
Han.miracle30 分钟前
Java EE --JUC
java·线程池·原子类·callable·semaphore·reentrantlcok
那我掉的头发算什么32 分钟前
【javaEE】多线程——线程安全初阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
爱奥尼欧41 分钟前
【Linux笔记】网络部分——NAT-代理-网络穿透
linux·网络·笔记
yzp-1 小时前
Zookeeper 笔记
java·分布式·zookeeper
蜡笔大新7981 小时前
IDEA中的异常
java·ide·intellij-idea