数据库之间数据迁移工具datax
简介
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
个人发现特点:数据量超过千万的迁移速度回加快(50000/s),低于千万的速度只有4000/s左右,目前还没发现原因

特点
DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。
支持数据库
| 类型 | 数据源 | Reader(读) | Writer(写) | 文档 |
|---|---|---|---|---|
| RDBMS 关系型数据库 | MySQL | √ | √ | 读 、写 |
| Oracle | √ | √ | 读 、写 | |
| OceanBase | √ | √ | 读 、写 | |
| SQLServer | √ | √ | 读 、写 | |
| PostgreSQL | √ | √ | 读 、写 | |
| DRDS | √ | √ | 读 、写 | |
| Kingbase | √ | √ | 读 、写 | |
| 通用RDBMS(支持所有关系型数据库) | √ | √ | 读 、写 | |
| 阿里云数仓数据存储 | ODPS | √ | √ | 读 、写 |
| ADB | √ | 写 | ||
| ADS | √ | 写 | ||
| OSS | √ | √ | 读 、写 | |
| OCS | √ | 写 | ||
| Hologres | √ | 写 | ||
| AnalyticDB For PostgreSQL | √ | 写 | ||
| 阿里云中间件 | datahub | √ | √ | 读 、写 |
| SLS | √ | √ | 读 、写 | |
| 图数据库 | 阿里云 GDB | √ | √ | 读 、写 |
| Neo4j | √ | 写 | ||
| NoSQL数据存储 | OTS | √ | √ | 读 、写 |
| Hbase0.94 | √ | √ | 读 、写 | |
| Hbase1.1 | √ | √ | 读 、写 | |
| Phoenix4.x | √ | √ | 读 、写 | |
| Phoenix5.x | √ | √ | 读 、写 | |
| MongoDB | √ | √ | 读 、写 | |
| Cassandra | √ | √ | 读 、写 | |
| 数仓数据存储 | StarRocks | √ | √ | 读 、写 |
| ApacheDoris | √ | 写 | ||
| ClickHouse | √ | √ | 读 、写 | |
| Databend | √ | 写 | ||
| Hive | √ | √ | 读 、写 | |
| kudu | √ | 写 | ||
| selectdb | √ | 写 | ||
| 无结构化数据存储 | TxtFile | √ | √ | 读 、写 |
| FTP | √ | √ | 读 、写 | |
| HDFS | √ | √ | 读 、写 | |
| Elasticsearch | √ | 写 | ||
| 时间序列数据库 | OpenTSDB | √ | 读 | |
| TSDB | √ | √ | 读 、写 | |
| TDengine | √ | √ | 读 、写 |
前提条件
- JDK(1.8以上,推荐1.8)
- Python(2或3都可以)
- Apache Maven 3.x (Compile DataX)
原生安装及使用
安装
安装包下载地址

下载后解压至本地某个目录,进入bin目录,即可运行同步作业:
$ cd {YOUR_DATAX_HOME}/bin
$ python datax.py {YOUR_JOB.json}
使用
配置示例:从stream读取数据并打印到控制台
-
第一步、创建作业的配置文件(json格式)
可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}
$ cd {YOUR_DATAX_HOME}/bin $ python datax.py -r streamreader -w streamwriter DataX (UNKNOWN_DATAX_VERSION), From Alibaba ! Copyright (C) 2010-2015, Alibaba Group. All Rights Reserved. Please refer to the streamreader document:https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md Please refer to the streamwriter document:https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md Please save the following configuration as a json file and usepython {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json to run the job.{"job": {"content": [{"reader": {"name": "streamreader", "parameter": {"column": [], "sliceRecordCount": ""}}, "writer": {"name": "streamwriter", "parameter": {"encoding": "", "print": true}}}], "setting": {"speed": {"channel": ""}}} }根据模板配置json如下:
#stream2stream.json {"job": {"content": [{"reader": {"name": "streamreader","parameter": {"sliceRecordCount": 10,"column": [{"type": "long","value": "10"},{"type": "string","value": "hello,你好,世界-DataX"}]}},"writer": {"name": "streamwriter","parameter": {"encoding": "UTF-8","print": true}}}],"setting": {"speed": {"channel": 5}}} } -
第二步:启动DataX
$ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./stream2stream.json同步结束,显示日志如下:
... 2015-12-17 11:20:25.263 [job-0] INFO JobContainer - 任务启动时刻 : 2015-12-17 11:20:15 任务结束时刻 : 2015-12-17 11:20:25 任务总计耗时 : 10s 任务平均流量 : 205B/s 记录写入速度 : 5rec/s 读出记录总数 : 50 读写失败总数 : 0
data-web本地部署
前提是安装了datax
下载源码 https://github.com/WeiYe-Jing/datax-web.git
目录结构如下

修改admin配置文件
修改datax_admin下resources/application.yml文件
#数据源datasource:username: rootpassword: rooturl: jdbc:mysql://localhost:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driver
修改数据源配置,目前仅支持mysql
# 配置mybatis-plus打印sql日志
logging:level:com.wugui.datax.admin.mapper: errorpath: ./data/applogs/admin
修改日志路径path
# datax-web emailmail:host: smtp.qq.comport: 25username: xxx@qq.compassword: xxxproperties:mail:smtp:auth: truestarttls:enable: truerequired: truesocketFactory:class: javax.net.ssl.SSLSocketFactory
修改邮件发送配置(不需要可以不修改)
修改excutor配置文件
修改datax_executor下resources/application.yml文件
# log config
logging:config: classpath:logback.xmlpath: ./data/applogs/executor/jobhandler
修改日志路径path
datax:job:admin:### datax-web admin addressaddresses: http://127.0.0.1:8080executor:appname: datax-executorip:port: 9999### job log pathlogpath: ./data/applogs/executor/jobhandler### job log retention dayslogretentiondays: 30executor:jsonpath: /Users/mac/data/applogspypath: /Users/mac/tools/datax/bin/datax.py
修改datax.job配置
- admin.addresses datax_admin部署地址,如调度中心集群部署存在多个地址则用逗号分隔,执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
- executor.appname 执行器AppName,每个执行器机器集群的唯一标示,执行器心跳注册分组依据;
- executor.ip 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
- executor.port 执行器Server端口号,默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
- executor.logpath 执行器运行日志文件存储磁盘路径,需要对该路径拥有读写权限;
- executor.logretentiondays 执行器日志文件保存天数,过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
- executor.jsonpath datax json临时文件保存路径
- pypath DataX启动脚本地址,例如:xxx/datax/bin/datax.py 如果系统配置DataX环境变量(DATAX_HOME),logpath、jsonpath、pypath可不配,log文件和临时json存放在环境变量路径下。
启动项目
本地idea开发环境
- 1.运行datax_admin下 DataXAdminApplication
- 2.运行datax_executor下 DataXExecutorApplication
admin启动成功后日志会输出三个地址,两个接口文档地址,一个前端页面地址
启动成功
启动成功后打开页面(默认管理员用户名:admin 密码:123456) http://localhost:8080/index.html#/dashboard

data-web的docker安装
前提条件安装好mysql
docker run -d --name datax-admin -p 2020:2020 -v /newdisk/datax/log/datax-admin.log:/tmp/datax-admin.log hametan/datax-web:2.1.2 java -jar datax-admin-2.1.2.jar --PORT=2020 --MYSQL_SERVICE_HOST=192.168.31.131 --MYSQL_SERVICE_PORT=3306 --MYSQL_USER=root --MYSQL_PASSWORD=123456 --DB_DATABASE=dataxdocker run -d --name datax-executor -p 2021:2021 -v /newdisk/datax/log/:/home/applogs/executor/jobhandler/ hametan/datax-web:2.1.2 java -jar datax-executor-2.1.2.jar --PORT=2021 --ADDRESSES=http://192.168.31.131:2020
相关文章:
数据库之间数据迁移工具datax
简介 DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databe…...
uniapp:根据环境(开发、测试、生产)选择服务器接口或者业务
一、根据环境(开发、测试、生产)选择服务器接口或者业务 打开main.js 页面,使用以下代码 const accountInfo wx.getAccountInfoSync(); const envWx accountInfo.miniProgram.envVersion; if (envWx develop) {console.log(开发环境&…...
Leetcode—63. 不同路径 II【中等】
2024每日刷题(115) Leetcode—63. 不同路径 II 动态规划算法思想 实现代码 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();…...
Redis 之三:Redis 的发布订阅(pub/sub)
概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式,它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中,有三种角色: 发布者(Publisher):负责发送信…...
ngx_waf入门教程:保护你的Nginx服务器
ngx_waf入门教程:保护你的Nginx服务器 在今天的网络环境中,安全性是每个网站和应用程序都必须考虑的关键因素。Nginx作为一款流行的开源Web服务器和反向代理服务器,广泛应用于各种业务场景。为了增强Nginx的安全性,我们可以使用n…...
视觉Transformers中的位置嵌入 - 研究与应用指南
视觉 Transformer 中位置嵌入背后的数学和代码简介。 自从 2017 年推出《Attention is All You Need》以来,Transformer 已成为自然语言处理 (NLP) 领域最先进的技术。 2021 年,An Image is Worth 16x16 Words 成功地将 Transformer 应用于计算机视觉任务…...
真香定律!我用这种模式重构了第三方登录
分享是最有效的学习方式。 博客:https://blog.ktdaddy.com/ 老猫的设计模式专栏已经偷偷发车了。不甘愿做crud boy?看了好几遍的设计模式还记不住?那就不要刻意记了,跟上老猫的步伐,在一个个有趣的职场故事中领悟设计模…...
Linux入门到入土
Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口)…...
基础真空技术外国文献Fundamentals of Vacuum Technology
基础真空技术外国文献Fundamentals of Vacuum Technology...
LeetCode每日一题【c++版】- 用队列实现栈与用栈实现队列
用队列实现栈 题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除…...
深入理解快速排序算法:从原理到实现
目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现: 6.2 JavaScript 实现&#…...
设计模式----装饰器模式
在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。 装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变他的…...
Golang pprof 分析程序的使用内存和执行时间
一、分析程序执行的内存情况 package mainimport ("os""runtime/pprof" )func main() {// ... 你的程序逻辑 ...// 将 HeapProfile 写入文件f, err : os.Create("heap.prof")if err ! nil {panic(err)}defer f.Close()pprof.WriteHeapProfile(f…...
C/C++平方和问题(蓝桥杯)
题目描述: 小明对数位中含有2、0、1、9 的数字很感兴趣,在1 到40 中这样的数包 括1、2、9、10 至32、39 和40,共28 个,他们的和是574,平方和是14362。 注意,平方和是指将每个数分别平方后求和。 请问&#…...
(libusb) usb口自动刷新
文章目录 libusb自动刷新程序Code目录结构Code项目文件usb包code包 效果描述重置reset热拔插使用 END libusb 在操作USB相关内容时,有一个比较著名的库就是libusb。 官方网址:libusb 下载: 下载源码官方编好的库github:Release…...
NLP(一)——概述
参考书: 《speech and language processing》《统计自然语言处理》 宗成庆 语言是思维的载体,自然语言处理相比其他信号较为特别 word2vec用到c语言 Question 预训练语言模型和其他模型的区别? 预训练模型是指在大规模数据上进行预训练的模型,通常…...
智慧公厕:打造智慧城市的环卫明珠
在城市建设中,公共卫生设施的完善和智能化一直是重要环节。而智慧公厕作为智慧城市建设的重要组成部分,发挥着不可替代的作用。本文以智慧公厕源头实力厂家广州中期科技有限公司,大量精品案例现场实景实图,解读智慧公厕如何助力打…...
[LeetBook]【学习日记】寻找链表相交节点
来源于「Krahets」的《图解算法数据结构》 https://leetcode.cn/leetbook/detail/illustration-of-algorithm/ 本题与主站 160 题相同:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 训练计划 V 某教练同时带教两位学员,分别以…...
【Python】OpenCV-使用ResNet50进行图像分类
使用ResNet50进行图像分类 如何使用ResNet50模型对图像进行分类。 import os import cv2 import numpy as np from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image# 设置…...
TypeError: `dumps_kwargs` keyword arguments are no longer supported
TypeError: dumps_kwargs keyword arguments are no longer supported 1. 问题描述2. 解决方法 1. 问题描述 使用 FastChat 启动私有大语言模型,通过一些 UI 工具进行访问时,报以下错误。 略 2024-02-29 09:26:14 | ERROR | stderr | yield f"…...
小米扫地机器人固件系统架构与功能解析
平台采用某米1代扫地机。 stm32f103真实项目程序。 c原程序 keil工程。 目前只有32端代码能实现延边避障防跌落充电等功能。适合需要学习项目与代码规范的工程师 硬件驱动包含 陀螺仪姿态传感器bmi160、电源管理bq24733等。 软件驱动包括 IIC、PWM、SPI、多路ADC与DMA、编码器输…...
最新版|2026年OpenClaw4月云端安装、配置大模型APIkey、接入skill指南,零门槛5分钟
最新版|2026年OpenClaw4月云端安装、配置大模型APIkey、接入skill指南,零门槛5分钟。OpenClaw作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业群聊、个人工作…...
Helloagents-13travel agent学习笔记
承接上文Helloagents-13.智能旅行助手学习笔记 _helloagents旅游项目-CSDN博客 1.全链路架构梳理 1. 订单接入(用户输入 -> 后端接收) 前端 (Vue): 用户在网页上填好目的地(如“悉尼”)、天数、出发日期等&#x…...
动态库路径配置实战:解决openssl symbol lookup error的深层解析
1. 问题背景:当openssl升级遇上symbol lookup error 上周我在升级服务器上的openssl时,遇到了一个典型的动态库问题。系统原本使用的是Ubuntu 20.04自带的openssl 1.1.1f,但项目需要用到1.1.1k的新特性。像大多数开发者一样,我选择…...
4大维度掌握全原子蛋白质设计:科研与药企人员的进阶指南
4大维度掌握全原子蛋白质设计:科研与药企人员的进阶指南 【免费下载链接】rf_diffusion_all_atom Public RFDiffusionAA repo 项目地址: https://gitcode.com/gh_mirrors/rf/rf_diffusion_all_atom 核心价值:重新定义蛋白质设计的效率与精度 [突…...
利用快马平台实现vibe coding效率提升:快速生成可拖拽任务看板原型
最近在尝试一种叫做"vibe coding"的开发方式,追求那种心流状态下的高效编程体验。但说实话,每次从零开始搭建项目原型时,那些重复性的UI搭建工作总是会打断这种流畅感。于是我开始寻找能帮我快速生成基础原型的工具,最终…...
【AI理论学习】深入解析词向量训练:从CBOW到Skip-Gram的实战对比
1. 词向量基础:从One-hot到分布式表示 第一次接触词向量时,我和大多数人一样被各种术语绕晕了。直到用实际项目踩过坑才明白,词向量本质上就是让计算机"理解"词语含义的数学工具。想象你教小朋友认字,既可以通过死记硬背…...
告别手动回复!用Python+uiautomation2给Android微信做个24小时值班机器人(附完整代码)
Android微信自动化:用uiautomation2打造全天候智能应答系统 深夜11点,你的手机突然亮起——又是一位老客户发来产品咨询。而此时,你开发的微信机器人已经自动识别关键词,秒回了详细的产品参数和购买链接。这不是科幻场景ÿ…...
企业级翻译系统落地:TranslateGemma助力国际化团队代码协作
企业级翻译系统落地:TranslateGemma助力国际化团队代码协作 1. 引言:全球化开发的语言挑战 在跨国企业技术团队中,代码协作常常面临语言障碍:核心框架文档是英文,而部分团队成员更习惯使用中文;开源项目注…...
FunASR实战:从零部署高并发实时会议语音转写与分析系统
1. 为什么企业会议需要智能语音转写系统 想象一下这样的场景:公司每周的跨部门会议持续两小时,8个参会人员轮流发言讨论季度目标。传统人工记录要么遗漏关键信息,要么会后需要3小时整理录音——而使用FunASR构建的系统能在会议结束瞬间生成带…...
