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
相关推荐
岁忧9 分钟前
(nice!!!)(LeetCode 每日一题) 2561. 重排水果 (哈希表 + 贪心)
java·c++·算法·leetcode·go·散列表
阿华的代码王国22 分钟前
【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题
android·xml·java·前端·后端
码农BookSea26 分钟前
自研 DSL 神器:万字拆解 ANTLR 4 核心原理与高级应用
java·后端
lovebugs29 分钟前
Java并发编程:深入理解volatile与指令重排
java·后端·面试
程序员JerrySUN31 分钟前
OpenCV 全解读:核心、源码结构与图像/视频渲染能力深度对比
linux·人工智能·驱动开发·opencv·计算机视觉·缓存·音视频
慕y27434 分钟前
Java学习第九十一部分——OkHttp
java·开发语言·学习
caisexi35 分钟前
Windows批量启动java服务bat脚本
java·windows·python
NullPointerExpection42 分钟前
win10 环境删除文件提示文件被使用无法删除怎么办?
java·ide·windows·win10
Techie峰1 小时前
【Java23种设计模式】:模板方法模式
java·设计模式·模板方法模式