--- name: "table-alias" description: "将准生产数据库表结构同步到 VPS 开发库,智能对比差异并执行 ALTER/CREATE" status: proposal version: "v1" date: "2026-08-14T06:24:41.780Z" --- # table-alias - 表结构对齐技能 ## 功能描述 将**准生产数据库**的表结构同步到**VPS 开发库**,确保开发环境与准生产环境表结构一致。 **同步方向:** 准生产(只读)→ VPS(root 可写) ## 触发方式 **自然语言命令:** ``` 同步准生产 dmp_serp 的表结构到 VPS 同步准生产 dmp_smdm 的表结构到 VPS ``` ## 执行流程 1. 解析命令提取源库名和目标库名 2. 从配置文件读取连接信息 3. 验证源库(只读)和目标库(root)连接 4. 获取源数据库所有表列表 5. 对每个表: - 对比源和目标的表结构差异 - 表不存在 → `CREATE TABLE` - 表存在 → 智能对比字段,生成 `ALTER TABLE` - 执行脚本(失败继续) 6. 生成 SQL 脚本文件和 README 7. 记录执行日志到 `memory/{date}.md` ## 智能对比 **对比维度:** - 表是否存在 → `SHOW TABLES` - 字段列表 → `information_schema.COLUMNS` - 字段类型、NULL 约束、默认值、注释 - 索引 → `information_schema.STATISTICS` **错误处理:** 遇到错误时,记录日志并继续处理下一个表 ## 配置文件 **位置:** `~/.openclaw/workspace-sql/.db-sync-config.yaml` ```yaml sources: - name: 准生产 host: 100.115.195.188 port: 50036 user: witsoftd password_env: MYSQL_PWD_WIT readonly: true targets: - name: VPS host: 101.34.227.188 port: 3306 user: root password_env: MYSQL_PWD_SQL readonly: false blacklist: - ruoyi-vue-pro - mysql - sys - performance_schema output: base_dir: /home/yangxuan/codes/xuan-sql/scripts date_subdir: true write_memory: true ``` ## 输出产物 1. **SQL 脚本文件** - `scripts/{日期}/{库}__{表}__struct.sql` 2. **README.md** - 执行摘要和表清单 3. **记忆文件** - `memory/{日期}.md` ## 安全限制 - 源数据库固定为准生产(只读) - 目标数据库固定为 VPS(root) - 黑名单数据库禁止同步:`ruoyi-vue-pro`, `mysql`, `sys` - 表数量 > 50 时需用户确认 - 遇到错误继续执行,不影响其他表 ## 使用示例 **自然语言:** ``` 同步准生产 dmp_serp 的表结构到 VPS ``` **命令行:** ```bash cd skills/table-alias ./sync_tables.sh dmp_serp ``` ## 文件结构 ``` skills/table-alias/ ├── SKILL.md # 技能说明 ├── sync_tables.sh # 执行脚本 ├── EXAMPLES.md # 使用示例 └── README.md # 快速开始 ``` ## 版本 1.0.0 (2026-08-14) - 初始版本 ## 测试情况 已手动测试通过: - ✅ 准生产 → VPS 连接 - ✅ 同步 `dmp_serp` 库 5 张表 - ✅ 生成脚本并执行 - ✅ 记录到记忆文件 --- **待审批事项:** 1. 技能名称 `table-alias` 是否合适? 2. 同步策略(智能对比 + 直接执行)是否满足需求? 3. 安全限制(黑名单、阈值)是否合理?