275 lines
5.6 KiB
Markdown
275 lines
5.6 KiB
Markdown
# 使用示例
|
||
|
||
## 自然语言触发
|
||
|
||
### 示例 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) - 执行脚本
|