# etl-tool **Repository Path**: wca/etl-tool ## Basic Information - **Project Name**: etl-tool - **Description**: **ETL Tool** 是一个基于 Spring Boot 构建的企业级数据集成平台,专注于提供**轻量、高效、可扩展**的 ETL (Extract, Transform, Load) 解决方案。它帮助用户快速实现异构数据源之间的数据同步、结构化文件导入、定时调度执行及全流程监控。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2026-07-21 - **Last Updated**: 2026-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Spring Boot Java 21 License Maven Status

ETL Tool

企业级数据集成与开发平台 — 轻量、高效、一站式

数据源管理 · ETL作业 · 文件导入 · DAG工作流 · 数据资产目录 · 定时调度 · 实时监控

--- ## 目录 - [项目简介](#-项目简介) - [核心特性](#-核心特性) - [技术栈](#-技术栈) - [架构设计](#-架构设计) - [快速开始](#-快速开始) - [配置文件说明](#-配置文件说明) - [API 文档](#-api-文档) - [使用指南](#-使用指南) - [项目结构](#-项目结构) - [同类项目对比](#-同类项目对比) - [改进路线图](#-改进路线图) - [FAQ](#-faq) - [贡献指南](#-贡献指南) - [许可证](#-许可证) --- ## 项目简介 **ETL Tool** 是一个基于 Spring Boot 3 构建的企业级数据集成与开发平台,集成 **数据源管理**、**ETL 作业调度**、**文件导入**、**DAG 工作流引擎**、**数据资产目录 (DCMM)** 以及 **权限认证** 等核心能力,提供一站式的数据全生命周期管理。 ### 适用场景 | 场景 | 说明 | |------|------| | 数据仓库建设 | 从业务库抽取数据到数仓,支持批量调度 | | 数据库迁移 | 跨数据库类型的数据迁移与同步 | | 文件数据入库 | Excel/CSV 结构化数据批量导入 | | 工作流编排 | DAG 任务编排,支持多任务依赖调度 | | 数据资产盘点 | DCMM 数据资产目录,血缘追溯,敏感分级 | | 企业数据整合 | 多源异构数据的统一整合与开发 | --- ## 核心特性 ### 权限与安全 - **Sa-Token 认证**:支持 Cookie / Header 双读,24h token 有效期 - **RBAC 权限模型**:ADMIN / EDITOR / VIEWER 三级角色 + 12 个细粒度权限码 - **密码加密**:BCrypt 密码哈希存储 - **默认账号**:admin/admin123, editor/editor123, viewer/viewer123 ### 多数据源支持 - **已支持**:MySQL、PostgreSQL、Oracle(12c/19c/21c)、Oracle 11g、SQL Server、SQL Server (pre-2012 via JTDS)、H2 - **Schema 配置**:PostgreSQL、Oracle、SQL Server 支持 Schema 配置,表浏览器按 Schema 分组折叠展示 - **连接测试**:可视化配置,连接测试,连接池参数调优 - **扩展能力**:通过 `JdbcUtils` 可快速扩展任意 JDBC 兼容数据库 ### 高性能 ETL 引擎 - **分页批量处理**:支持大数据量分页查询(默认 **50000 条/页**),逐页提取 → 逐页写入 - **批量写入优化**:支持 `rewriteBatchedStatements`(MySQL 自动启用),批量 INSERT 合并为单条多值 SQL - **可配置批处理大小**:页面中可直接配置批量提交条数(默认 **1000 条/批**) - **多写入模式**:INSERT / UPDATE / UPSERT / TRUNCATE-INSERT - **多引擎支持**:NATIVE (JDBC) 和 DataX 嵌入式引擎双模式 - **自动建表**:支持根据源表结构在目标库自动创建表 - **逐行降级**:批量执行失败时自动降级为逐行插入 ### 灵活的数据转换 - **8 种内置转换函数**:`UPPER`、`LOWER`、`TRIM`、`REPLACE`、`CONCAT`、`SUBSTRING`、`DATE_FORMAT`、`TO_INTEGER` - **字段级映射**:支持源-目标列名映射,默认值设置 - **模式对比**:可视化对比源-目标表结构差异 ### 智能 SQL 解析与列映射 - **SQL 字段自动填充**:基于 SQL 查询的作业,自动从数据库解析字段名/别名 - **Reload Columns**:编辑 SQL 后一键刷新解析列映射 ### 数据开发 (DAG 工作流引擎) - **工作流管理**:DAG 可视化编辑,轻量级依赖选择器(消除连线杂乱) - **三种任务类型**:数据同步 (SYNC)、SQL 执行 (SQL)、Shell 脚本 (SHELL) - **拓扑排序执行**:自动计算执行层级,上游失败自动阻断下游 (SKIPPED) - **异步执行**:`ExecutorService` 异步执行,实时状态刷新 - **脚本管理**:Shell/SQL 脚本文件上传与版本管理 - **Cron 调度**:基于 Quartz 的任务/工作流定时调度 ### 数据资产目录 (DCMM) - **数据资产总览**:统计看板,按业务域/数据分级汇总 - **资产登记**:库表(TABLE)、报表(REPORT)、文件(FILE)、数据产品(PRODUCT) 四类资产 - **8 个业务域**:客户 / 账户 / 交易 / 产品 / 风控 / 适当性 / 清算 / 资讯 - **数据分级**:核心 / 重要 / 一般(依据证券期货业分类分级指引) - **敏感分类**:PII / 账户 / 交易 / 资产 / 风险 / 非敏感 - **数据血缘**:表级/字段级上下游追踪,可视化图谱 ### 文件导入 - **格式支持**:Excel (.xlsx/.xls) 和 CSV (.csv/.tsv/.txt) - **列映射**:文件字段到目标表字段的自定义映射 - **智能解析**:自动检测文件类型、编码、分隔符 - **预览功能**:导入前预览文件前 N 行数据 ### 监控与日志 - **实时执行进度**:任务详情页实时展示进度条、已处理/总条数、处理速度、耗时 - **2 秒轮询刷新**:执行中页面自动轮询 - **全流程追踪**:记录每个作业/工作流的执行状态、耗时、数据量 - **失败重试**:可配置重试次数和延迟 --- ## 技术栈 | 分类 | 技术 | 版本 | |------|------|------| | **框架** | Spring Boot | 3.5.15 | | **ORM** | Spring Data JPA / Hibernate | - | | **认证鉴权** | Sa-Token | 1.40.0 | | **数据库(元数据)** | H2 (文件模式) | - | | **数据库驱动** | MySQL / PostgreSQL / Oracle / SQL Server / JTDS | - | | **前端** | Thymeleaf + HTML5 + CSS3 + JavaScript | - | | **任务调度** | Quartz Scheduler | - | | **文件处理** | Apache POI 5.2.5 (Excel) / OpenCSV 5.9 | - | | **序列化** | Jackson (JSON + YAML) | - | | **密码加密** | BCrypt + AES-256/GCM | - | | **工具** | Lombok / Commons-Lang3 / Commons-IO | - | | **构建** | Maven 3.6+ | - | | **最低 JDK** | **Java 21** | - | --- ## 架构设计 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ Auth Layer (Sa-Token) │ │ ADMIN / EDITOR / VIEWER + 12 权限码 │ ├──────────┬──────────┬──────────┬───────────┬──────────┬─────────────────┤ │ Views │ Index │ System │ Catalog │ Import │ Development │ │ │ 仪表盘 │ 数据源/作业│ 数据资产 │ 文件导入 │ 工作流/任务/调度 │ ├──────────┴──────────┴──────────┴───────────┴──────────┴─────────────────┤ │ Controller Layer │ │ ┌────────────┐ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ │ │DataSource │ │ EtlJob │ │ FileImport│ │ Auth/User │ │ │ │Controller │ │Controller│ │Controller │ │ Controllers │ │ │ ├────────────┤ ├─────────┤ ├──────────┤ ├──────────────┤ │ │ │DevWorkflow │ │DevTask │ │DevInstance│ │DevSchedule │ │ │ │Controller │ │Controller│ │Controller │ │Controller │ │ │ ├────────────┤ └─────────┘ ├──────────┤ ├──────────────┤ │ │ │DataCatalog │ │Log │ │ DevScript │ │ │ │Controller │ │Controller│ │ Controller │ │ │ └────────────┘ └──────────┘ └──────────────┘ │ ├─────────────────────────────────────────────────────────────────────────┤ │ Service Layer │ │ ┌───────────────────┐ ┌───────────────────┐ ┌──────────────────────┐ │ │ │DynamicDataSource │ │ EtlExecution │ │ FileImportService │ │ │ │ Service │ │ Service (ETL引擎) │ │ (文件导入引擎) │ │ │ │ · 连接管理 │ │ · 数据抽取/转换 │ │ · Excel/CSV 解析 │ │ │ │ · 连接测试 │ │ · 批量写入/降级 │ │ · 自定义列映射 │ │ │ │ · 元数据查询 │ │ · Schema 对比/同步 │ │ · 批量写入 │ │ │ └───────────────────┘ └───────────────────┘ └──────────────────────┘ │ │ ┌───────────────────┐ ┌───────────────────┐ ┌──────────────────────┐ │ │ │ WorkflowEngine │ │ DevScheduler │ │ EtlJobService │ │ │ │ (DAG 拓扑执行) │ │ Service (Quartz) │ │ (作业 CRUD) │ │ │ └───────────────────┘ └───────────────────┘ └──────────────────────┘ │ │ ┌───────────────────┐ ┌───────────────────┐ ┌──────────────────────┐ │ │ │ EmbeddedDatax │ │ DataCatalog │ │ SchedulerService │ │ │ │ Runner │ │ Service │ │ (原生 Quartz) │ │ │ │ (隔离ClassLoader) │ │ (DCMM 资产管理) │ └──────────────────────┘ │ │ └───────────────────┘ └───────────────────┘ │ ├─────────────────────────────────────────────────────────────────────────┤ │ Repository / Data Access Layer │ │ JPA Repositories (20+) · JDBC (动态连接) · File I/O (Excel/CSV) │ ├─────────────────────────────────────────────────────────────────────────┤ │ Storage │ │ ┌─────────┐ ┌────────────────────┐ ┌──────────┐ │ │ │ H2 │ │ MySQL / PG / Oracle │ │ 文件系统 │ │ │ │(元数据DB)│ │ / SQL Server / H2 │ │(上传/临时)│ │ │ └─────────┘ └────────────────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ ``` --- ## 快速开始 ### 环境要求 - **JDK**: 21 或更高版本 - **Maven**: 3.6+ - **磁盘**: 至少 500MB 可用空间 ### 下载与运行 ```bash # 1. 克隆项目 git clone https://github.com/your-username/etl-tool.git cd etl-tool # 2. 编译打包 mvn clean package -DskipTests # 3. 运行 java -jar target/etl-tool-1.0.0.jar # 4. 打开浏览器访问 # http://localhost:8080/etl-tool/ ``` 启动后系统自动创建 H2 文件数据库存储元数据,默认路径为 `./data/etl-tool`。 ### 默认端口 | 服务 | 地址 | |------|------| | Web 管理界面 | http://localhost:8080/etl-tool/ | | H2 控制台 | http://localhost:8080/etl-tool/h2-console | | Actuator 健康检查 | http://localhost:8080/etl-tool/actuator/health | ### 内置账号 | 角色 | 用户名 | 密码 | 权限 | |------|--------|------|------| | 管理员 | admin | admin123 | 全部权限 | | 编辑者 | editor | editor123 | 读写权限 (view + edit) | | 查看者 | viewer | viewer123 | 只读权限 (view only) | --- ## 配置文件说明 核心配置位于 `src/main/resources/application.yml`: ```yaml server: port: 8080 servlet: context-path: /etl-tool spring: datasource: url: jdbc:h2:file:./data/etl-tool # 元数据存储路径 username: sa password: jpa: hibernate: ddl-auto: update # 自动建表/更新 # Sa-Token 认证 sa-token: token-name: satoken timeout: 86400 # Token 超时 24h active-timeout: 1800 # 活跃超时 30min # ETL 引擎参数 etl: batch: size: 1000 # 批量提交条数 commit-interval: 500 # 提交间隔 execution: max-retries: 3 # 最大重试次数 retry-delay-ms: 5000 # 重试延迟 (ms) timeout-minutes: 60 # 作业超时时间 datax: home: ./datax # DataX 安装目录 channel: 3 # DataX 并发通道数 ``` --- ## API 文档 ### 数据源管理 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/datasources` | 获取所有数据源 | | `POST` | `/api/datasources` | 创建数据源 | | `PUT` | `/api/datasources/{id}` | 更新数据源 | | `DELETE` | `/api/datasources/{id}` | 删除数据源 | | `POST` | `/api/datasources/test` | 测试连接 | | `GET` | `/api/datasources/{id}/tables` | 获取表列表 | | `GET` | `/api/datasources/{id}/tables-with-schema` | 获取表列表 (含 Schema) | | `GET` | `/api/datasources/{id}/tables/{name}/columns` | 获取列信息 | | `POST` | `/api/datasources/{id}/sql-columns` | SQL 字段解析 | ### ETL 作业管理 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/jobs` | 获取所有作业 | | `GET` | `/api/jobs/{id}` | 获取作业详情 | | `POST` | `/api/jobs` | 创建作业 | | `PUT` | `/api/jobs/{id}` | 更新作业 | | `DELETE` | `/api/jobs/{id}` | 删除作业 | | `POST` | `/api/jobs/{id}/execute` | 立即执行 (同步) | | `POST` | `/api/jobs/{id}/execute-async` | 立即执行 (异步) | | `POST` | `/api/jobs/{id}/stop` | 停止执行 | | `GET` | `/api/jobs/{id}/executions` | 执行历史 | | `POST` | `/api/jobs/{id}/schedule` | 设置定时调度 | | `DELETE` | `/api/jobs/{id}/schedule` | 取消定时调度 | | `POST` | `/api/jobs/compare-schema` | 对比表结构 | | `POST` | `/api/jobs/sync-schema` | 同步表结构 | ### 文件导入 | 方法 | 路径 | 说明 | |------|------|------| | `POST` | `/api/import/file` | 上传并导入文件 | | `POST` | `/api/import/preview` | 预览文件内容 | | `GET` | `/api/import/jobs` | 导入历史 | | `GET` | `/api/import/jobs/{id}` | 导入详情 | | `POST` | `/api/import/excel/sheets` | 获取 Excel Sheet 列表 | ### 数据开发 (Dev) | 方法 | 路径 | 说明 | |------|------|------| | `GET/POST` | `/api/dev/workflows` | 工作流列表 / 创建 | | `PUT/DELETE` | `/api/dev/workflows/{id}` | 更新 / 删除工作流 | | `GET/POST` | `/api/dev/tasks` | 任务列表 / 创建 | | `PUT/DELETE` | `/api/dev/tasks/{id}` | 更新 / 删除任务 | | `GET/POST` | `/api/dev/scripts` | 脚本列表 / 上传 | | `PUT/DELETE` | `/api/dev/scripts/{id}` | 更新 / 删除脚本 | | `GET/POST` | `/api/dev/schedules` | 调度列表 / 创建 | | `PUT/DELETE` | `/api/dev/schedules/{id}` | 更新 / 删除调度 | | `GET` | `/api/dev/instances` | 运行实例列表 | | `GET` | `/api/dev/instances/{id}` | 实例详情 | | `POST` | `/api/dev/instances/{id}/kill` | 终止运行 | | `POST` | `/api/dev/instances/{id}/retry` | 重试失败 | ### 数据资产目录 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/catalog/overview` | 资产总览统计 | | `GET/POST` | `/api/catalog/resources` | 资产列表 / 新增 | | `GET/PUT/DELETE` | `/api/catalog/resources/{id}` | 资产详情 / 更新 / 删除 | | `GET` | `/api/catalog/domains` | 业务域列表 | | `GET` | `/api/catalog/lineage/{assetId}` | 数据血缘图谱 | | `POST` | `/api/catalog/lineage` | 创建血缘关系 | --- ## 使用指南 ### 1. 登录与权限 访问 `http://localhost:8080/etl-tool/`,使用内置账号登录。不同角色菜单和操作权限不同: - **ADMIN**:所有菜单可见,所有操作可用 - **EDITOR**:可创建和编辑数据源/作业/工作流,但不能管理用户 - **VIEWER**:仅可查看,不能创建、编辑或删除 ### 2. 添加数据源 进入 **数据源管理** → **新增数据源**,选择数据库类型,填写连接信息,点击 **测试连接** 验证后保存。 ### 3. 创建 ETL 作业 进入 **作业管理** → **新建作业**: 1. 选择源和目标数据源 2. 选择抽取方式(Table / SQL Query),SQL Query 可点击 Reload Columns 自动解析字段 3. 配置列映射和转换函数 4. 设置写入模式(INSERT / UPSERT / TRUNCATE-INSERT)和批量参数 5. 可选配置 Cron 定时调度 6. 保存后执行 ### 4. DAG 工作流编排 进入 **数据开发** 模块: 1. **创建任务**:选择 SYNC/SQL/SHELL 类型,配置具体执行参数 2. **创建工作流**:选择参与任务,通过多选依赖编辑器设置任务间依赖关系 3. **设置调度**:配置 Cron 表达式定时触发 4. **运行监控**:在实例页面查看执行进度、状态,支持 Kill 和 Retry ### 5. 数据资产登记 进入 **数据目录** 模块: 1. 选择资产类型(库表/报表/文件/数据产品) 2. 填写业务域、数据分级、敏感分类等 DCMM 元数据 3. 在线索关系管理中添加上下游依赖,构建血缘图谱 ### 6. 监控执行 - **实时进度**:作业详情页顶部显示进度条、处理量、速度、耗时,2 秒自动轮询 - **执行历史**:在日志页面按作业、状态、时间范围筛选查看 - **工作流监控**:数据开发 → 运行监控 查看 DAG 工作流执行层级状态 --- ## 项目结构 ``` etl-tool/ ├── pom.xml ├── README.md ├── datax/ # DataX 安装目录 (可选) ├── src/ │ ├── main/ │ │ ├── java/com/etltool/ │ │ │ ├── EtlToolApplication.java │ │ │ ├── config/ # 配置类 (Cors, SaToken, EtlProperties, WebMvc) │ │ │ ├── model/ # JPA 实体 (15+) │ │ │ │ ├── EtlJob.java # ETL 作业 │ │ │ │ ├── DataSource.java # 数据源配置 │ │ │ │ ├── DataAsset.java # DCMM 数据资产 │ │ │ │ ├── DagWorkflow.java # DAG 工作流 │ │ │ │ ├── DevTask.java # 开发任务 (SYNC/SQL/SHELL) │ │ │ │ └── ... # 执行日志、调度、血缘等 │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── repository/ # JPA 仓库 (20+) │ │ │ ├── service/ # 业务服务 │ │ │ │ ├── dev/ # 数据开发服务 │ │ │ │ │ ├── WorkflowEngine.java # DAG 拓扑执行 │ │ │ │ │ ├── DevExecutionService.java # 执行编排 │ │ │ │ │ ├── DevSchedulerService.java # 调度管理 │ │ │ │ │ ├── EmbeddedDataxRunner.java # DataX 嵌入运行 │ │ │ │ │ └── ... # 各类型任务执行器 │ │ │ │ ├── EtlExecutionService.java # ETL 执行引擎 │ │ │ │ ├── DynamicDataSourceService.java # 动态数据源 │ │ │ │ ├── FileImportService.java # 文件导入 │ │ │ │ ├── DataCatalogService.java # 数据资产 │ │ │ │ └── ... # 调度、统计、认证 │ │ │ ├── web/ # 控制器 │ │ │ │ ├── DevViewController.java # 开发模块页面 │ │ │ │ ├── Dev*Controller.java # 开发模块 API │ │ │ │ └── ... # 数据源/作业/导入/资产 │ │ │ ├── exception/ # 异常定义 + 全局处理 │ │ │ └── util/ # 工具类 │ │ │ ├── JdbcUtils.java # JDBC 工具 (SQL构建/分页/连接) │ │ │ ├── EncryptionUtils.java # AES-256/GCM 加密 │ │ │ └── CsvUtils.java # CSV 解析工具 │ │ └── resources/ │ │ ├── application.yml │ │ ├── static/ │ │ │ ├── css/style.css # 全局样式 │ │ │ └── js/ │ │ │ ├── main.js # 入口 + 页面路由 │ │ │ └── pages/dev.js # 数据开发模块脚本 │ │ └── templates/ # Thymeleaf 模板 (30+) │ │ ├── index.html # 仪表盘首页 │ │ ├── login.html # 登录页 │ │ ├── system/ # 系统管理 (数据源/作业/日志/用户) │ │ ├── import/ # 文件导入 │ │ ├── catalog/ # 数据资产目录 │ │ └── dev/ # 数据开发 (11 个页面) │ └── test/ # 单元测试 (75+) └── logs/ # 运行日志 ``` --- ## 同类项目对比 ### 多维度对比矩阵 | 维度 | **本项目** | **Kettle (PDI)** | **Apache NiFi** | **DataX** | |------|:--------:|:----------------:|:---------------:|:---------:| | **部署方式** | 轻量 JAR 包 | 重量级 GUI+Server | Java Agent 集群 | 单机命令行 | | **安装复杂度** | 零配置 | 需 JDK+GUI | 需 ZooKeeper | CLI 即可 | | **启动时间** | ~10 秒 | ~30 秒+ | ~60 秒+ | 秒级 | | **Web 管理界面** | 内置 Thymeleaf | 需 Carte/Spoon | 内置 | 无 | | **REST API** | 完整 RESTful | 有限 | 全面 | 无 | | **权限管理** | RBAC + 12 权限码 | 无 | 细粒度 | 无 | | **DAG 工作流** | 内置轻量编辑 | 需 Carte/外部 | 完整 | 需外部调度 | | **数据资产目录** | DCMM 资产+血缘 | 无 | 基础 Provenance | 无 | | **多数据源** | 5 种 (可扩展) | 30+ 种 | 100+ 处理器 | MySQL/OSS 为主 | | **DataX 集成** | 嵌入式引擎 | 不支持 | 不支持 | 原生 | | **文件导入** | Excel/CSV | 多种格式 | 各种格式 | 不支持 | | **调度系统** | Quartz 内置 | 需 Carte/外部 | 内置 | 需外部调度 | | **内存占用** | ~200MB | ~1GB+ | ~2GB+ | ~500MB | | **学习成本** | 低 | 中等 | 中高 | 低 | | **二次开发** | 易 (Spring Boot) | 插件复杂 | 需懂 NiFi 架构 | 需改源码 | ### 项目优势 1. **轻量极简**:单 JAR 包启动,~200MB 内存,10 秒完成,零运维 2. **一站式平台**:数据源管理 + ETL + 工作流 + 资产目录 + 权限,功能齐全 3. **RESTful 架构**:完整 JSON API,天然适合微服务集成 4. **DAG 工作流**:轻量多选依赖编辑器,比传统拖拽更简洁高效 5. **DataX 集成**:嵌入式 DataX 引擎,利用 DataX 插件生态 6. **DCMM 数据资产**:数据分级、敏感分类、血缘追溯 7. **开箱即用**:内置权限认证,默认账号即开即用 ### 项目不足 1. **数据源连接器有限**:仅内置 5 种数据库,缺少云数据源和 NoSQL 支持 2. **单机架构**:无法水平扩展,大数据量场景受限于单机资源 3. **无实时流处理**:仅支持批处理,无 CDC 等变更捕获能力 4. **监控告警基础**:无 Prometheus/Grafana 集成,无邮件/Webhook 告警 5. **无版本管理**:工作流/作业定义不支持 Git 版本控制 --- ## 改进路线图 | 优先级 | 改进项 | 预期效果 | |:------:|--------|----------| | P0 | 数据源 SPI 插件化 | 可插拔扩展任意数据库 / API / 消息队列 | | P0 | 并行执行引擎 | 提升大数据量同步性能 10x+ | | P1 | Prometheus 指标导出 | 对接现有监控体系 | | P1 | 增量同步 (CDC / Watermark) | 支持实时 / 准实时同步 | | P2 | Webhook / 邮件告警 | 异常及时发现 | | P2 | 数据质量校验规则 | 提升数据可信度 | | P2 | Git 版本管理集成 | 实现 CI/CD 发布 | | P3 | 分布式集群模式 | 水平扩展支撑 TB 级数据 | --- ## FAQ **Q: 支持哪些数据库类型?** A: 目前支持 MySQL、PostgreSQL、Oracle、SQL Server、H2。通过扩展 `JdbcUtils` 可添加更多 JDBC 兼容数据库。 **Q: 上传文件大小有限制吗?** A: 默认单文件最大 200MB,可在 `application.yml` 中调整。 **Q: 如何修改元数据存储位置?** A: 修改 `application.yml` 中的 `spring.datasource.url`,默认使用 H2 文件数据库。 **Q: 支持增量同步吗?** A: 可通过在源端 SQL 中使用 `WHERE` 条件实现基于时间戳或增量字段的增量抽取。 **Q: 如何切换 DataX 执行引擎?** A: 在作业编辑页中选择 `DATAX` 引擎,并确保 `etl.datax.home` 配置了 DataX 安装目录。 **Q: 默认账户能删除或修改吗?** A: 默认账户通过 `AuthDataSeeder` 幂等写入,可在数据库层面修改或通过用户管理页面操作。 --- ## 贡献指南 欢迎贡献代码或提出建议! 1. **Fork** 本仓库 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'feat: add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 打开 **Pull Request** --- ## 许可证 本项目基于 **Apache License 2.0** 开源许可证发布。 ``` Copyright 2024 ETL Tool Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` ---

Made with ❤️ by the ETL Tool Team
Built with Spring Boot · Java · Open Source