Files
openclaw-config/skill-workshop/proposals/table-alias-20260814-97302444a5/PROPOSAL.md
T

3.1 KiB
Raw Blame History

name, description, status, version, date
name description status version date
table-alias 将准生产数据库表结构同步到 VPS 开发库,智能对比差异并执行 ALTER/CREATE proposal v1 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

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

安全限制

  • 源数据库固定为准生产(只读)
  • 目标数据库固定为 VPSroot
  • 黑名单数据库禁止同步:ruoyi-vue-pro, mysql, sys
  • 表数量 > 50 时需用户确认
  • 遇到错误继续执行,不影响其他表

使用示例

自然语言:

同步准生产 dmp_serp 的表结构到 VPS

命令行:

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. 安全限制(黑名单、阈值)是否合理?