A versatile open-source ETL tool
Addax is an extensible ETL (Extract, Transform, Load) tool supporting over 20 SQL/NoSQL data sources, developed as a fork and evolution of Alibaba's DataX. It provides a growing ecosystem of plugins and offers easy-to-follow configuration for data integrations.
- Supports 20+ 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.
Detailed instructions on installation, configuration, and usage are available:
Addax supports a wide range of database systems and file sources. Below is a selection of supported platforms:
See the full list of supported data sources.
Addax can be quickly installed and used via Docker, installation scripts, or compiled from source.
Pull the prebuilt Docker image and run a test job:
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
A lightweight
-lite
image is also available: Learn more.
Install Addax with a single command:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/wgzhao/Addax/master/install.sh)"
Installation paths: /usr/local (macOS), /opt/addax/ (Linux).
For developers targeting custom-builds, compile and package Addax locally:
git clone https://github.com/wgzhao/addax.git addax
cd addax
mvn clean package
mvn package assembly:single
The compiled binary will be in target/datax/addax-<version>
.
Load sample job configuration and test the setup:
bin/addax.sh job/job.json
Explore more example jobs
- Java Runtime: JDK 1.8+
- Python Version: Python 2.7+ / 3.7+ (Windows only)
Generate or preview online documentation locally using mkdocs:
python3 -m pip install mkdocs-material
mkdocs build
mkdocs serve -a 0.0.0.0:8888
For publishing:
export version=4.1.5
git checkout $version
mike deploy -p $version
Follow general Java conventions and patterns:
- Use IntelliJ IDE with Airlift's Code Style
- Categorize exceptions clearly with AddaxException (e.g.,
AddaxException(REQUIRE_VALUE, "missing required parameter")
). - Use the Java 8 Stream API cautiously (avoid in performance-sensitive areas).
- Avoid ternary operators for non-trivial expressions.
- Include proper Apache license headers in every file.
Refer to our Programming Guidelines for commit message formats.
This project adheres to the Semantic Versioning (SemVer) standard with the format x.y.z
. The meanings of each segment are as follows:
-
z(Patch Version):
- Bug fixes and performance improvements that do not affect compatibility with existing features.
- Example:
1.2.3 → 1.2.4
-
y(Minor Version):
- Introducing new features or module adjustments that could break backward compatibility.
- Example:
1.2.3 → 1.3.0
-
x(Major Version):
- Significant changes or new features that are often incompatible with previous versions.
- Example:
1.3.0 → 2.0.0
This software is free to use under the Apache License 2.0.
Special thanks to JetBrains for providing open-source support to this project.