wgzhao/Addax
wgzhao/Addax has 1,452 GitHub stars and 342 forks. GitHot measured 0 stars in 24 hours and +2 in 7 days. Last checked 2026-11-15 08:32 UTC. Last push 2026-11-13.
可以做什么
- Supports 30+ SQL and NoSQL data sources, and easily extendable for more.
- Configurable via simple JSON-based job descriptions.
- Actively maintained with improved architecture and added functionality compared to DataX.
- Docker images for quick deployment.
实测星标增长
- 24小时
- 0
- 7天
- +2
- 15天
- 正在收集历史
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
关于
Actively maintained successor to Alibaba DataX — a fast, versatile, open-source ETL tool for 30+ RDBMS and NoSQL data sources.
数据README_zh.md
原文
任意数据源,任意目标,就是快
使用文档 详细描述了如何安装使用,针对每个插件都有详细的说明和样例配置文档
Addax 是阿里开源 DataX 的活跃维护继任者(DataX 官方仓库自 2023 年后已停止更新)—— 一个快速、通用的开源 ETL 工具,支持 30+ 关系型与非关系型数据源。在此基础上经过了大量的改进,持续活跃维护,并提供了更多的读写插件,详细情况可参考与DataX的主要区别
项目状态
Addax 处于积极的维护中。 项目有意进入成熟的维护阶段:
- 月度维护版发布。 大约每月发布一个新版本(见 Releases),即使没有新特性,也会包含依赖/CVE 更新和 bug 修复。
- 及时的 issue 响应。 已提交的 issue 通常在数天内得到回应和解决,而不是数月。
- 稳定是刻意的定位。 插件功能刻意保持稳定:我们修复 bug、更新依赖,而不是追逐特性变动。新的数据源插件在有真实社区需求时才会添加——如果你需要,请提交 issue。
- 欢迎贡献。 PR 持续被评审。参与方式见 CONTRIBUTING.md。
维护者请参阅 RELEASING.md 了解发布流程。
支持的数据库一览表
Addax 支持超过 30 种关系型和非关系型数据库,通过简单的配置,还可以快速增加更多的数据源支持。
快速开始
使用 Docker 镜像
docker pull quay.io/wgzhao/addax:latest
docker run -ti --rm --name addax \
quay.io/wgzhao/addax:latest \
/opt/addax/bin/addax.sh /opt/addax/job/job.json
使用一键安装脚本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/wgzhao/Addax/master/install.sh)"
上述脚本会将 Addax 安装到预设的目录( 对于 macOS Intel 而言,目录为 /usr/local, Apple Silicon 以及 Linux 系统则为 /opt/addax)
编译及打包
目前编译需要 JDK 17 版本
git clone https://github.com/wgzhao/addax.git addax
cd addax
export MAVEN_OPTS="-DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Dgpg.skip=true"
mvn clean package
mvn package -Pdistribution
编译打包成功后,会在项目目录的target 目录下创建一个 addax-<version>的 文件夹,其中 <version> 表示版本。
开始第一个任务
job 子目录包含了大量的任务样本,其中 job.json 可以作为冒烟测试,执行如下
bin/addax.sh job/job.json
上述命令的输出大致如下:
点击展开
$bin/addax.sh job/job.json
___ _ _
/ _ \ | | | |
/ /_\ \ __| | __| | __ ___ __
| _ |/ _` |/ _` |/ _` \ \/ /
| | | | (_| | (_| | (_| |> <
\_| |_/\__,_|\__,_|\__,_/_/\_\
:: Addax version :: (v4.0.13-SNAPSHOT)
2023-05-14 11:43:38.040 [ main] INFO VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2023-05-14 11:43:38.062 [ main] INFO Engine -
{
"setting":{
"speed":{
"byte":-1,
"channel":1,
"record":-1
}
},
"content":{
"reader":{
"name":"streamreader",
"parameter":{
"sliceRecordCount":10,
"column":[
{
"value":"addax",
"type":"string"
},
{
"value":19890604,
"type":"long"
},
{
"value":"1989-06-04 11:22:33 123456",
"type":"date",
"dateFormat":"yyyy-MM-dd HH:mm:ss SSSSSS"
},
{
"value":true,
"type":"bool"
},
{
"value":"test",
"type":"bytes"
}
]
}
},
"writer":{
"name":"streamwriter",
"parameter":{
"print":true,
"encoding":"UTF-8"
}
}
}
}
2023-05-14 11:43:38.092 [ main] INFO JobContainer - The jobContainer begins to process the job.
2023-05-14 11:43:38.107 [ job-0] INFO JobContainer - The Reader.Job [streamreader] perform prepare work .
2023-05-14 11:43:38.107 [ job-0] INFO JobContainer - The Writer.Job [streamwriter] perform prepare work .
2023-05-14 11:43:38.108 [ job-0] INFO JobContainer - Job set Channel-Number to 1 channel(s).
2023-05-14 11:43:38.108 [ job-0] INFO JobContainer - The Reader.Job [streamreader] is divided into [1] task(s).
2023-05-14 11:43:38.108 [ job-0] INFO JobContainer - The Writer.Job [streamwriter] is divided into [1] task(s).
2023-05-14 11:43:38.130 [ job-0] INFO JobContainer - The Scheduler launches [1] taskGroup(s).
2023-05-14 11:43:38.138 [ taskGroup-0] INFO TaskGroupContainer - The taskGroupId=[0] started [1] channels for [1] tasks.
2023-05-14 11:43:38.141 [ taskGroup-0] INFO Channel - The Channel set byte_speed_limit to -1, No bps activated.
2023-05-14 11:43:38.141 [ taskGroup-0] INFO Channel - The Channel set record_speed_limit to -1, No tps activated.
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
addax 19890604 1989-06-04 11:24:36 true test
2023-05-14 11:43:41.157 [ job-0] INFO AbstractScheduler - The scheduler has completed all tasks.
2023-05-14 11:43:41.158 [ job-0] INFO JobContainer - The Writer.Job [streamwriter] perform post work.
2023-05-14 11:43:41.159 [ job-0] INFO JobContainer - The Reader.Job [streamreader] perform post work.
2023-05-14 11:43:41.162 [ job-0] INFO StandAloneJobContainerCommunicator - Total 10 records, 260 bytes | Speed 86B/s, 3 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00%
2023-05-14 11:43:41.596 [ job-0] INFO JobContainer -
Job start at : 2023-05-14 11:43:38
Job end at : 2023-05-14 11:43:41
Job took secs : 3ss
Average bps : 86B/s
Average rps : 3rec/s
Number of rec : 10
Failed record : 0
运行要求
- JDK 17 or later
- Python 2.7+ / Python 3.7+ (Windows)
文档
相关项目
- addax-admin - 基于web的管理工具,用于管理基于Addax的数据采集任务
- addax-docs - Addax的文档资源库,包含使用指南、插件开发文档、示例配置等
代码风格
建议使用 IntelliJ 作为开发 IDE。项目的代码风格模板可以在codestyle资源库中找到,还有我们的一般编程和Java指南。除了这些之外,你还应该遵守以下几点。
- 在文档源文件中按字母顺序排列章节(包括目录文件和其他常规文档文件)。一般来说,如果周围的代码中已经存在这样的排序,就按字母顺序排列方法/变量/部分。
- 在适当的时候,使用Java 8的流API。然而,请注意,流的实现并不是很好,所以避免在内循环或其他对性能敏感的部分使用它。
- 在抛出异常时对错误进行分类。例如,AddaxException 使用错误代码和错误消息作为参数,
AddaxException(REQUIRE_VALUE, "lack of required item")。这种分类可以让你生成报告,这样你就可以监控各种故障。 - 确保所有文件都有适当的许可证头;你可以通过运行
mvn license:format生成许可证。 - 考虑使用字符串格式化(使用Java
Formatter类的printf风格):format("Session property %s is invalid: %s", name, value)(注意,format()应该总是静态导入)。有时,如果你只需要附加一些东西,可以考虑使用+运算符。 - 除了琐碎的表达式,避免使用三元操作符。
- 如果有涵盖你的情况的断言,就使用Airlift的
Assertions类,而不是手工写断言。 - 在编写Git提交信息时,请遵循这些[指南](https://chris.beams.io/posts/git-commit/)。
版本命名规范
本项目遵循 语义化版本规则 管理版本号,格式为 x.y.z,每个部分含义如下:
z(补丁版本):
- 修复问题、性能优化等小改动,不影响现有功能的兼容性。
- 示例:
1.2.3 → 1.2.4
y(次要版本):
- 添加新功能、模块调整,可能打破部分兼容性。
- 示例:
1.2.3 → 1.3.0
x(主要版本):
- 引入重大变更或全新功能,大概率与前版本不兼容。
- 示例:
1.3.0 → 2.0.0
Star History
代码授权许可
该软件在遵守 Apache license 下可自由免费使用
特别感谢
特别感谢 JetBrains 对本项目提供开发工具赞助