English | 简体中文
Go版本的DataX数据同步工具,100%兼容DataX JSON配置格式。
- 🚀 高性能: Go语言实现,高并发数据传输
- 🔧 零依赖: 单二进制文件,无需额外安装
- 📊 30+数据源: 支持主流数据库和存储系统
- ✅ 100%兼容: 完全兼容DataX Java版配置文件
- ⚡ Go优化: 增强的splitPk支持和JSON文件处理
与Java版本只支持数字类型splitPk不同,Go版本支持:
- 数字类型:
int,bigint,decimal等(与Java版本兼容) - 字符串类型:
varchar,text等字符串字段分片 - 日期类型:
date,timestamp等时间字段分片
{
"reader": {
"parameter": {
"splitPk": "create_time", // 支持日期时间字段分片
"where": "status = 'active'"
}
}
}新增专用JSON文件读取和写入插件:
- JsonFileReader: 读取JSON/JSONL文件
- JsonFileWriter: 写入JSON格式文件
- 自动模式识别: 自动检测标准JSON vs JSONL格式
{
"reader": {
"name": "jsonfilereader",
"parameter": {
"path": ["/data/input.json"],
"encoding": "UTF-8"
}
}
}采用DataX三层架构设计:
Engine Layer (引擎层)
├── JobContainer (作业容器)
└── TaskGroupContainer (任务组容器)
├── Reader Task (读取任务)
├── Channel (数据通道)
└── Writer Task (写入任务)
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。
| 类型 | 数据源 | Reader(读) | Writer(写) | 文档 |
|---|---|---|---|---|
| 关系型数据库 | MySQL | ✅ | ✅ | 读 、写 |
| PostgreSQL | ✅ | ✅ | 读 、写 | |
| Oracle | ✅ | ✅ | 读 、写 | |
| SQL Server | ✅ | ✅ | 读 、写 | |
| SQLite | ✅ | ✅ | 读 、写 | |
| OceanBase | ✅ | ✅ | 读 、写 | |
| GaussDB | ✅ | ✅ | 读 、写 | |
| Sybase ASE | ✅ | ✅ | 读 、写 | |
| 大数据存储 | ClickHouse | ✅ | ✅ | 读 、写 |
| StarRocks | ✅ | ✅ | 读 、写 | |
| Apache Doris | ✅ | ✅ | 读 、写 | |
| HDFS | ✅ | ✅ | 读 、写 | |
| Databend | ❌ | ✅ | 写 | |
| NoSQL数据库 | MongoDB | ✅ | ✅ | 读 、写 |
| Cassandra | ✅ | ✅ | 读 、写 | |
| Neo4j | ❌ | ✅ | 写 | |
| ElasticSearch | ❌ | ✅ | 写 | |
| 时序数据库 | TDengine | ✅ | ✅ | 读 、写 |
| 文件存储 | TXT文件 | ✅ | ✅ | 读 、写 |
| JSON文件 | ✅ | ✅ | 读 、写 | |
| FTP/SFTP | ✅ | ✅ | 读 、写 | |
| 云存储 | OSS | ✅ | ❌ | 读 |
| 流数据 | Stream | ✅ | ✅ | 读 、写 |
# Linux x86_64
wget https://github.com/longkeyy/go-datax/releases/latest/download/datax-linux-amd64
chmod +x datax-linux-amd64
sudo mv datax-linux-amd64 /usr/local/bin/datax
# macOS Apple Silicon
wget https://github.com/longkeyy/go-datax/releases/latest/download/datax-darwin-arm64
chmod +x datax-darwin-arm64
sudo mv datax-darwin-arm64 /usr/local/bin/dataxdocker pull ghcr.io/longkeyy/go-datax:latestgit clone https://github.com/longkeyy/go-datax.git
cd go-datax
make build- 创建配置文件 (
config.json):
{
"job": {
"setting": {
"speed": {
"channel": 3
}
},
"content": [{
"reader": {
"name": "postgresqlreader",
"parameter": {
"username": "postgres",
"password": "password",
"connection": [{
"jdbcUrl": ["jdbc:postgresql://localhost:5432/source_db"],
"table": ["user_table"]
}],
"column": ["id", "name", "email"],
"splitPk": "id"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "root",
"password": "password",
"connection": [{
"jdbcUrl": "jdbc:mysql://localhost:3306/target_db",
"table": ["user_table"]
}],
"column": ["id", "name", "email"]
}
}
}]
}
}- 执行数据同步:
# 本地运行
./datax -job config.json
# Docker运行
docker run --rm -v $(pwd)/config.json:/config.json ghcr.io/longkeyy/go-datax:latest -job /config.json{
"job": {
"setting": {
"speed": {
"channel": 4, // 并发通道数
"record": 10000, // 记录数限制
"byte": 1048576 // 字节数限制
},
"errorLimit": {
"record": 100, // 错误记录上限
"percentage": 0.05 // 错误率上限
}
}
}
}{
"reader": {
"parameter": {
"where": "create_time > '2023-01-01'",
"splitPk": "user_id", // 支持数字、字符串、日期类型
"fetchSize": 1024
}
}
}- ✅ 三层架构: Engine-JobContainer-TaskGroupContainer
- ✅ 插件系统: Reader/Writer工厂模式注册
- ✅ 数据模型: Record/Column类型系统
- ✅ 配置管理: 100% JSON配置兼容
- ✅ 监控统计: 实时传输监控和性能指标
- ✅ 错误控制: errorLimit和容错机制
- ✅ 全量同步: 完整表数据同步
- ✅ 增量同步: 基于WHERE条件的业务增量
- ✅ 异构同步: 跨数据源类型同步
- ✅ 分片并发: splitPk分片并行处理
- ❌ 实时同步: 不支持(与Java版一致)
- ✅ dx_filter: 数据过滤
- ✅ dx_substr: 字符串截取
- ✅ dx_replace: 字符串替换
- ✅ dx_pad: 字符串填充
- ✅ dx_digest: 数据摘要
- ❌ dx_groovy: 脚本转换(计划支持)
- 🚀 非数字splitPk: 支持字符串、日期类型分片
- 🚀 JSON文件支持: JsonFileReader/Writer
- 🚀 纯Go驱动: Oracle/Sybase无需客户端
- 🚀 单二进制: 零依赖部署
- ✅ 关系型数据库 (8个): MySQL, PostgreSQL, Oracle, SQL Server, SQLite, OceanBase, GaussDB, Sybase
- ✅ 大数据存储 (6个): HDFS, ClickHouse, StarRocks, Doris, Databend, TDengine
- ✅ NoSQL数据库 (4个): MongoDB, Cassandra, Neo4j, ElasticSearch
- ✅ 文件存储 (3个): TXT文件, JSON文件, FTP/SFTP
- ✅ 云存储 (1个): OSS
- ✅ 流数据 (1个): Stream
- ❌ 计划支持: HBase, MaxCompute, OTS
总计: 21种数据源,42个Reader/Writer插件
欢迎提交Issue和Pull Request来帮助改进项目。
本项目采用MIT许可证 - 详见LICENSE文件。
- DataX (Java版) - 阿里巴巴开源的异构数据源离线同步工具