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.jsonInstall 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).
- Java Compiler: JDK 17
For developers aiming to create custom-builds, compile and package Addax locally:
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 -PdistributionThe compiled binary will be in target/addax-<version>.
Load sample job configuration and test the setup:
bin/addax.sh job/job.jsonExplore more example jobs
- Java Runtime: JDK 17
- Python Version: Python 2.7+ / 3.7+ (Windows only)
- addax-admin - A web-based management tool for administering Addax data collection tasks
- addax-ui - Frontend implementation for addax-admin
Generate or preview online documentation locally using mkdocs:
python3 -m pip install mkdocs-material
mkdocs build
mkdocs serve -a 0.0.0.0:8888For publishing:
export version=4.1.5
git checkout $version
mike deploy -p $versionFollow 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.