1. 简介
dbswitch 是一个专注于跨数据库数据迁移与同步的开源工具库,旨在简化不同数据库之间的结构迁移(Schema Migration)和数据同步(Data Synchronization)流程。支持数据的全量、增量、变化量方式同步。它支持多种主流关系型数据库(如 MySQL、PostgreSQL、Oracle、SQL Server 等)和部分非关系型数据库,提供灵活的配置和高性能的迁移能力,广泛用于数据中台建设、多数据源整合、数据库升级迁移等场景。
2. 核心功能与特点
1. 多数据库支持
覆盖主流关系型数据库及部分特殊数据库,包括:
- 关系型数据库:MySQL、PostgreSQL、Oracle、SQL Server、DB2、MariaDB、TiDB、达梦(DM)、人大金仓(Kingbase)等;
- 数据仓库 / 分析型数据库:ClickHouse、Greenplum、Hive 等;
- 其他:SQLite、MongoDB(部分支持)。
支持不同数据库之间的双向迁移(如 MySQL → PostgreSQL、Oracle → TiDB 等)。
2. 全量 + 增量迁移能力
- 全量迁移:一次性迁移目标表的所有历史数据,适合初始化场景;
- 增量迁移:基于时间戳(Timestamp)、自增 ID、数据库日志(如 MySQL 的 binlog)等方式捕获增量数据,支持实时或定时同步,满足业务连续性需求。
3. 结构与数据双迁移
- 结构迁移(Schema Conversion):自动转换不同数据库的表结构(如数据类型映射:MySQL 的 VARCHAR→PostgreSQL 的 VARCHAR,Oracle 的 NUMBER→MySQL 的 DECIMAL)、索引、约束(主键、外键)等,减少手动调整成本;
- 数据迁移(Data Transfer):高效迁移表数据,支持大字段(BLOB、CLOB)、分区表、视图等特殊对象的迁移。
4. 高性能与可扩展性
- 并行迁移:支持多表并行迁移、单表分片并行读取,提升大规模数据迁移效率;
- 流式处理:采用流式读取 / 写入模式,避免全量加载数据到内存,降低内存占用;
- 可扩展架构:通过插件化设计支持新增数据库类型,用户可自定义数据类型映射规则或迁移逻辑。
5. 易用性与灵活性
- 提供命令行工具、Java API、Spring Boot Starter 等多种使用方式,适配不同场景(如脚本自动化、集成到应用系统);
- 支持配置文件(YAML/JSON)定义迁移任务,可指定迁移对象(表、字段过滤)、迁移策略(全量 / 增量)、错误重试机制等;
- 内置数据校验功能,迁移后可自动比对源表与目标表的数据一致性(行数、校验和等)。
3. 安装与基本使用
1. 环境依赖
- JDK 8+(核心为 Java 开发);
- Maven: >=3.6, Maven 仓库默认在国外,国内使用难免很慢,可以更换为阿里云的仓库;
- 源数据库和目标数据库的驱动(需手动添加对应 JDBC 驱动包,如 mysql-connector-java、postgresql 等)。
2. 安装方式
- 源码编译:从 GitHub 仓库克隆代码,通过 Maven 编译:
- Windows 下:双击 build.cmd 脚本文件即可编译打包
- Linux 下:
git clone https://gitee.com/dromara/dbswitch.git cd dbswitch/ sh ./build.sh - Docker 下:
git https://gitee.com/dromara/dbswitch.git dbswitch/ sh ./docker-maven-build.sh


