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
相关推荐
fīɡЙtīиɡ ℡1 分钟前
AI 应用系统设计
java·开发语言·人工智能
Lonely 净土8 分钟前
Linux 运维文件写入操作
linux·运维·服务器·文件管理
城管不管9 分钟前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅9 分钟前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒22 分钟前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
聪明蛋子哟1 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
最强小杰1 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
今天AI了吗2 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
卷无止境2 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
TELL5212 小时前
selenium webdriver 第二次初始化的异常
开发语言·python