DATABASES

支持的数据库

v1.2.1 起十四种常用数据库驱动随包内置(TiDB 兼容 MySQL 协议、复用 MySQL 驱动),仅 GBase、神通 Oscar 与自定义数据库需要自备厂商驱动 jar

MySQL MariaDB Oracle SQL Server DB2 PostgreSQL OpenGauss 达梦 DM 人大金仓 KingBase OceanBase TiDB 瀚高 HighGo 海量 Vastbase 崖山 YashanDB 南大通用 GBase 神通 Oscar H2 (内嵌元数据库)
其中 MySQL、MariaDB、Oracle、SQL Server、DB2、PostgreSQL、openGauss、达梦、人大金仓、OceanBase、瀚高、海量、崖山、H2 共十四种驱动随包内置(v1.2.0 起十种,v1.2.1 新增 OceanBase、瀚高、海量、崖山;TiDB 兼容 MySQL 协议、复用 MySQL 驱动),开箱即用;GBase、神通 Oscar 以及自定义数据库需提供厂商驱动 jar 路径,运行时通过独立 URLClassLoader + DriverShim 动态加载注册, 不污染应用类加载器,也不会与内置驱动发生版本冲突。
IDEMPOTENT WRITE

各库 upsert 语法对照

每一行都通过基于主键的 upsert 写入,重复执行收敛到同一状态 —— 这把「至少一次投递」变成了「结果上的恰好一次」

数据库语句
MySQL 系(MySQL / MariaDB / TiDB / OceanBase / GBase / H2)INSERT ... ON DUPLICATE KEY UPDATE
PostgreSQL 系(PostgreSQL / openGauss / 金仓 / 瀚高 / 海量 / 神通)INSERT ... ON CONFLICT (pk) DO UPDATE
Oracle 系(Oracle / 达梦 DM / 崖山 YashanDB)MERGE INTO ... USING (SELECT ? FROM DUAL)
SQL ServerMERGE ... WITH (HOLDLOCK)
DB2MERGE INTO ... USING (VALUES (?))
通用 / 自定义UPDATE-then-INSERT(无原生 upsert 时的兜底,含唯一冲突重试)
无主键表:无法识别既有行,因此无法保证幂等,重放可能产生重复行。工具会明确告警,建议为表添加主键。

预置的 OceanBase 对应 MySQL 模式租户,Oracle 模式租户请选「自定义」类型并填写 Oracle 系 JDBC URL;崖山 YashanDB 的 URL 前缀为 jdbc:yasdb:,选择类型后自动生成,无需记忆。

DRIVER LOADING

驱动动态加载机制

十四种常用驱动随包内置,个别商业 / 自定义驱动仍按需动态加载,互不污染应用类加载器

内置驱动(十四种)

MySQL、MariaDB、Oracle、SQL Server、DB2、PostgreSQL、openGauss、达梦 DM、人大金仓 KingBase、OceanBase、瀚高 HighGo、海量 Vastbase、崖山 YashanDB、H2。 v1.2.0 起随发行包内置,v1.2.1 扩充至十四种,开箱即用,新建连接时不再需要手动上传 jar。 TiDB 兼容 MySQL 协议,复用内置 MySQL 驱动,选 TiDB 类型即可。

自备驱动(三种情况)

仅 GBase、神通 Oscar 与自定义数据库需要自备 jar:在连接配置中填写驱动 jar 路径,工具会用独立 URLClassLoader 加载,并通过 DriverShim 注册到 DriverManager。

把驱动 jar 放到服务器上

bash
mkdir -p /opt/jync/drivers
cp gbase-8.3.81.53.jar oscarJDBC.jar /opt/jync/drivers/   # 仅 GBase / 神通 Oscar 需要

然后在「数据库连接」页面新建连接时,填写驱动 jar 路径(如 /opt/jync/drivers/gbase-8.3.81.53.jar) 与驱动类名(选择预设类型时会自动填好)。点击「测试连接」验证加载成功即可保存。

📄 许可提示:十四种内置驱动按各自原厂许可证随包再分发,版本与许可详见仓库 THIRD_PARTY_LICENSES.md;GBase、神通 Oscar 等第三方驱动不随本项目分发, 请自行从厂商处获取并确认使用授权。
XINCHUANG

为信创迁移而生

Oracle / SQL Server → 国产库的替换场景是本工具的主战场

🇨🇳 国产数据库是一等选项,不是「也许能连上」

达梦、人大金仓、OceanBase、TiDB、瀚高、海量、崖山、南大通用、神通、OpenGauss 十种信创库都是预设选项,各自有专门的方言与元数据读取器实现,而不是靠通用 JDBC 蒙。已处理的差异包括:

  • upsert 写法 —— MERGE INTO ... FROM DUAL 这类 Oracle 系特有语法
  • 类型上限 —— Oracle VARCHAR2 4000、SQL Server 4000、DB2 DECIMAL 31;无精度 NUMBER 不产生 DECIMAL(0,0)
  • 精度裁剪 —— 已声明的精度被裁剪到上限而不丢失小数位
  • 函数名差异 —— 如 SUBSTR → SUBSTRING,且不会二次命中自身
  • 标识符引号规则 —— 各产品的引号字符与大小写敏感性不同
  • 不可移植的默认值 —— 被丢弃而非生成非法 DDL

这恰恰是 Debezium、Canal 生态最薄弱的地方 —— 它们基本不支持国产数据库。