Become a sponsor

概述
cmd/migrator 实现跨库整库迁移:源库内省 → 目标方言 DDL 生成 → 分批搬运 → 序列/自增修复。支持五方言互迁(Oracle 经构建标签启用)。
① 内省源库(introspect):表结构、索引、表/列注释、数据
↓
② DDL 生成(ddl):按目标方言语法转换建表语句(含索引与表/列注释)
↓
③ 建表执行(migrate 框架内)
↓
④ 分批搬运(copy):按主键分批 SELECT→INSERT,控制内存
↓
⑤ 序列修复:自增/序列对齐最大 IDmake migrator ARGS="-src-type=mysql -src-database=db1 ... "参数覆盖源/目标的类型与连接信息。方言能力:
| 方言 | 支持 |
|---|---|
| mysql / postgres / sqlserver / sqlite | 内置 |
| oracle | -tags oracle 构建启用(godror 驱动) |
internal/migrate/
├── model.go 迁移模型(表/列/索引抽象)
├── introspect.go 源库内省
├── ddl.go 目标方言 DDL 生成
├── copy.go 分批数据搬运
└── migrate.go 流程编排
cmd/migrator/ CLI 入口方言 DDL 差异(类型映射、引号、自增语法)全部收敛在 ddl.go——新增方言只需补类型映射表。
| 场景 | 说明 |
|---|---|
| 换数据库 | MySQL → PostgreSQL,应用配置同步改 driver |
| 环境搬迁 | 测试库数据复制到生产(注意脱敏) |
| 部分迁移后整库 | 项目内种子脚本(document/*/)用于初始化,migrator 用于存量搬迁 |