pg2dm-converter/EXECUTOR_README.md
dengqichen cd7788de95 init
2025-11-15 17:29:39 +08:00

314 lines
6.9 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.

# 达梦数据库自动执行器使用指南
## ✅ 完整可行方案(零额外依赖)
基于**disql命令行工具**,使用你本地已有的达梦数据库管理工具。
---
## 📋 前提条件检查
### 1. 达梦数据库管理工具已安装
```
✅ 已确认: D:\sortware\dm_manager
```
### 2. disql工具存在
```
✅ 工具路径: D:\sortware\dm_manager\bin\disql.exe
```
### 3. Node.js已安装
```bash
node -v
# 应显示版本号,如 v20.19.5
```
### 4. 配置文件已准备
```
✅ db-mapping.json - 数据库连接和schema映射
```
---
## 🚀 立即使用
### 方式一:一键批量执行(推荐)
**双击执行**:
```
execute-all.bat
```
这会自动执行`output`目录下的所有`*_dm.sql`文件。
---
### 方式二:命令行执行
#### 执行所有SQL文件
```bash
node dm-executor.js output/*_dm.sql
```
#### 执行单个文件
```bash
node dm-executor.js output/themetis_data_dm.sql
```
#### 执行指定文件
```bash
node dm-executor.js output/schema1_dm.sql output/schema2_dm.sql
```
---
## 📊 执行效果展示
```
======================================================================
🚀 达梦数据库批量执行器
======================================================================
📂 文件数: 14
🌐 服务器: 219.142.42.183
🔧 工具: D:\sortware\dm_manager\bin\disql.exe
======================================================================
[1/14]
======================================================================
📂 执行: lyg_scp_dm.sql
📋 Schema: lyg_scp
🎯 端口: 5256
======================================================================
............................................................
----------------------------------------------------------------------
✅ lyg_scp_dm.sql 执行成功
端口: 5256 | 耗时: 3.45秒
----------------------------------------------------------------------
[2/14]
======================================================================
📂 执行: themetis_scp_dm.sql
📋 Schema: themetis_scp
🎯 端口: 5256
======================================================================
............................................................
----------------------------------------------------------------------
✅ themetis_scp_dm.sql 执行成功
端口: 5256 | 耗时: 12.32秒
----------------------------------------------------------------------
... (继续执行其他文件)
======================================================================
📊 执行统计
======================================================================
总文件数: 14
✅ 成功: 14
❌ 失败: 0
⏱ 总耗时: 45.67秒
按端口统计:
端口 5256: 14个文件 (✅14 ❌0)
📄 详细报告: ./output/execution_report_1731660123456.json
======================================================================
```
---
## 🔧 工作原理
### 1. 自动检测schema
```javascript
// 从SQL内容中提取schema名称
"themetis_data"."table_name" schema = "themetis_data"
```
### 2. 自动路由端口
```javascript
// 根据db-mapping.json配置选择端口
schema "themetis_data" port 5256
schema "other_schema" port 5266
```
### 3. 使用disql执行
```bash
disql SYSDBA/@1sdgCq456@219.142.42.183:5256 @schema_dm.sql
```
### 4. 收集统计信息
- 成功/失败数量
- 执行耗时
- 错误信息
- 生成JSON报告
---
## 📁 完整工作流
```
┌─────────────────────┐
│ 1. 转换SQL │
│ node converter.js │
└──────────┬──────────┘
┌─────────────────────┐
│ input/*.sql │
│ (PostgreSQL) │
└──────────┬──────────┘
┌─────────────────────┐
│ output/*_dm.sql │
│ (达梦格式) │
└──────────┬──────────┘
┌─────────────────────┐
│ 2. 执行SQL │
│ node dm-executor.js │
│ output/*_dm.sql │
└──────────┬──────────┘
┌─────────────────────┐
│ 达梦数据库 │
│ 219.142.42.183:5256│
└─────────────────────┘
```
---
## 🛠 配置文件说明
### db-mapping.json
```json
{
"defaultConnection": {
"host": "219.142.42.183",
"user": "SYSDBA",
"password": "@1sdgCq456"
},
"defaultPort": 5256,
"schemaMappings": {
"lyg_scp": { "port": 5256, "description": "连云港SCP" },
"themetis_data": { "port": 5256, "description": "主数据" }
}
}
```
---
## ❓ 常见问题
### Q1: 找不到disql工具
**A**: 检查路径是否正确
```bash
dir D:\sortware\dm_manager\bin\disql.exe
```
如果路径不同,修改`dm-executor.js`第23行。
---
### Q2: 执行失败
**A**: 查看详细报告
```bash
# 报告文件在
./output/execution_report_*.json
```
---
### Q3: 连接数据库失败
**A**: 检查配置
1. db-mapping.json中的密码是否正确
2. 数据库是否可访问
3. 端口是否正确
测试连接:
```bash
D:\sortware\dm_manager\bin\disql.exe SYSDBA/@1sdgCq456@219.142.42.183:5256
```
---
### Q4: 某些SQL执行失败
**A**: 检查SQL语法
1. 查看报告中的错误信息
2. 手动在DM Manager中测试SQL
3. 可能需要重新转换SQL
---
### Q5: 执行速度慢
**A**: 正常现象
- 大文件需要更长时间
- 可以单独执行小文件测试
- disql是串行执行比较稳定但不够快
---
## 📈 性能建议
### 1. 分批执行
对于大量SQL文件建议分批执行
```bash
# 先执行小的schema
node dm-executor.js output/lyg_scp_dm.sql output/model_scp_dm.sql
# 再执行大的schema
node dm-executor.js output/themetis_scp_dm.sql
```
### 2. 按端口分组
如果有多个数据库端口,可以分别执行:
```bash
# 只执行5256端口的
node dm-executor.js output/schema1_dm.sql output/schema2_dm.sql
# 再执行5266端口的
node dm-executor.js output/schema3_dm.sql
```
---
## 🎯 优势
1. **零额外依赖** - 只需Node.js和disql
2. **最稳定** - 使用官方工具
3. **完全自动** - 一键执行所有SQL
4. **智能路由** - 自动识别schema并选择端口
5. **详细报告** - JSON格式的执行报告
6. **可重复执行** - 支持多次执行
---
## 📞 技术支持
遇到问题?检查:
1. Node.js版本 (node -v)
2. disql工具 (测试手动连接)
3. 配置文件 (db-mapping.json)
4. SQL文件 (output目录)
5. 网络连接 (ping 219.142.42.183)
---
## 🎉 开始使用
```bash
# 1. 转换SQL
node converter.js
# 2. 执行SQL
node dm-executor.js output/*_dm.sql
# 或者直接双击
execute-all.bat
```
**就这么简单!** 🚀