Files
openclaw-config/workspace-sql/skills/table-alias/EXAMPLES.md
T

275 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 使用示例
## 自然语言触发
### 示例 1:同步 dmp_serp
**用户:**
```
同步准生产 dmp_serp 的表结构到 VPS
```
**技能响应:**
```
开始执行表结构对齐...
源数据库:准生产 (100.115.195.188:50036) dmp_serp
目标数据库:VPS (101.34.227.188:3306) dmp_serp
[1/5] 验证数据库连接...
✓ 源数据库连接成功
✓ 目标数据库连接成功
[2/5] 获取源数据库表列表...
找到 45 张表
[3/5] 对比并生成脚本...
处理表:dmp_om_productinfo
→ 目标表已存在,对比结构差异...
→ 发现结构差异,生成 ALTER 语句
✓ ALTER TABLE 成功
处理表:dmp_om_productinfo_cost
→ 目标表不存在,执行 CREATE TABLE
✓ CREATE TABLE 成功
...
[4/5] 生成 README.md...
[5/5] 记录到记忆文件...
============================================================
执行完成!
============================================================
总表数:45
成功:45
失败:0
脚本目录:/home/yangxuan/codes/xuan-sql/scripts/20260814
记忆文件:/home/yangxuan/.openclaw/workspace-sql/memory/2026-08-14.md
============================================================
```
---
### 示例 2:同步 dmp_smdm
**用户:**
```
同步准生产 dmp_smdm 的表结构到 VPS
```
**执行:** 同上,目标库为 `dmp_smdm`
---
## 命令行直接执行
### 基本用法
```bash
cd /home/yangxuan/.openclaw/workspace-sql/skills/table-alias
# 同步 dmp_serp
./sync_tables.sh dmp_serp
# 同步 dmp_smdm
./sync_tables.sh dmp_smdm
# 指定不同的目标库名(少见场景)
./sync_tables.sh dmp_serp dmp_serp_dev
```
---
## 配置文件修改
### 添加新的源数据库
编辑 `~/.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
# 添加新的源
- name: 生产备份
host: 47.99.209.185
port: 3306
user: backup_user
password_env: MYSQL_PWD_BACKUP
readonly: true
```
### 添加新的目标数据库
```yaml
targets:
- name: VPS
host: 101.34.227.188
port: 3306
user: root
password_env: MYSQL_PWD_SQL
readonly: false
blacklist:
- ruoyi-vue-pro
# 添加新的目标
- name: 本地测试
host: 127.0.0.1
port: 3306
user: root
password_env: MYSQL_PWD_LOCAL
readonly: false
blacklist:
- mysql
- sys
```
---
## 输出文件示例
### SQL 脚本文件
`20260814/dmp_serp__dmp_om_productinfo__struct.sql`
```sql
-- ============================================================
-- 表结构同步脚本:dmp_om_productinfo
-- 源:准生产 (100.115.195.188:50036)
-- 目标:VPS (101.34.227.188:3306) dmp_serp
-- 生成时间:2026-08-14 14:00:00
-- 操作:ALTER TABLE(结构差异)
-- ============================================================
USE dmp_serp;
-- 结构差异:
-- - 添加字段:cust_product_spec
-- - 添加字段:invoice_status
-- - 删除字段:creator_user_id
ALTER TABLE dmp_om_productinfo ADD COLUMN cust_product_spec varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '客户产品规格' AFTER invoice_status;
ALTER TABLE dmp_om_productinfo ADD COLUMN invoice_status varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'Y' COMMENT 'Y/N 是否开票' AFTER order_change_flag;
ALTER TABLE dmp_om_productinfo DROP COLUMN creator_user_id;
-- ============================================================
-- 验证
-- ============================================================
-- SHOW CREATE TABLE dmp_om_productinfo\G
```
### README.md
```markdown
# 表结构同步脚本 - 20260814
**源:** 准生产 `100.115.195.188:50036` `dmp_serp`
**目标:** VPS `101.34.227.188:3306` `dmp_serp`
**生成时间:** 2026-08-14 14:00:00
**执行状态:** ✅ 已完成
## 脚本清单
| 序号 | 脚本文件 | 操作类型 | 状态 | 说明 |
|------|---------|---------|------|------|
| 1 | `dmp_serp__dmp_om_productinfo__struct.sql` | ALTER | ✅ | 3 处变更 |
| 2 | `dmp_serp__dmp_om_productinfo_cost__struct.sql` | CREATE | ✅ | 新建表 |
| ... | ... | ... | ... | ... |
## 执行结果
- 总表数:45
- 成功:45
- 失败:0
## 验证命令
```sql
-- 检查表列表
SHOW TABLES LIKE 'dmp_serp%';
-- 检查表结构
SHOW CREATE TABLE dmp_om_productinfo\G
```
```
---
## 常见问题
### Q1: 密码环境变量未设置
**错误:**
```
错误:密码环境变量未设置
请确保已设置:MYSQL_PWD_WIT 和 MYSQL_PWD_SQL
```
**解决:**
```bash
# 在 ~/.bashrc 或 ~/.zshrc 中添加
export MYSQL_PWD_WIT=o2byaCkBvF1Y8S2L
export MYSQL_PWD_SQL=5gynj20J
# 重新加载
source ~/.bashrc # 或 source ~/.zshrc
```
---
### Q2: 表数量超过阈值
**提示:**
```
表数量超过 50 张(当前:80),是否继续?[y/N]
```
**解决:** 输入 `y` 继续,或按 `Ctrl+C` 取消
---
### Q3: ALTER TABLE 失败
**错误:**
```
处理表:dmp_om_productinfo
→ 发现结构差异,生成 ALTER 语句
✗ ALTER TABLE 失败(继续执行下一个表)
```
**原因:** 可能是字段类型冲突、有 NULL 值等
**解决:**
1. 查看生成的 SQL 脚本
2. 手动修复数据(如更新 NULL 值)
3. 重新执行脚本
---
### Q4: 连接超时
**错误:**
```
错误:无法连接到源数据库(准生产)
```
**解决:**
1. 检查 Windows 端口转发是否运行
2. 检查防火墙设置
3. 验证密码是否正确
---
## 相关文档
- [SKILL.md](SKILL.md) - 技能详细说明
- [../.db-sync-config.yaml](../.db-sync-config.yaml) - 配置文件
- [sync_tables.sh](sync_tables.sh) - 执行脚本