6.9 KiB
6.9 KiB
达梦数据库自动执行器使用指南
✅ 完整可行方案(零额外依赖)
基于disql命令行工具,使用你本地已有的达梦数据库管理工具。
📋 前提条件检查
1. 达梦数据库管理工具已安装
✅ 已确认: D:\sortware\dm_manager
2. disql工具存在
✅ 工具路径: D:\sortware\dm_manager\bin\disql.exe
3. Node.js已安装
node -v
# 应显示版本号,如 v20.19.5
4. 配置文件已准备
✅ db-mapping.json - 数据库连接和schema映射
🚀 立即使用
方式一:一键批量执行(推荐)
双击执行:
execute-all.bat
这会自动执行output目录下的所有*_dm.sql文件。
方式二:命令行执行
执行所有SQL文件
node dm-executor.js output/*_dm.sql
执行单个文件
node dm-executor.js output/themetis_data_dm.sql
执行指定文件
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
// 从SQL内容中提取schema名称
"themetis_data"."table_name" → schema = "themetis_data"
2. 自动路由端口
// 根据db-mapping.json配置选择端口
schema "themetis_data" → port 5256
schema "other_schema" → port 5266
3. 使用disql执行
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
{
"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: 检查路径是否正确
dir D:\sortware\dm_manager\bin\disql.exe
如果路径不同,修改dm-executor.js第23行。
Q2: 执行失败
A: 查看详细报告
# 报告文件在
./output/execution_report_*.json
Q3: 连接数据库失败
A: 检查配置
- db-mapping.json中的密码是否正确
- 数据库是否可访问
- 端口是否正确
测试连接:
D:\sortware\dm_manager\bin\disql.exe SYSDBA/@1sdgCq456@219.142.42.183:5256
Q4: 某些SQL执行失败
A: 检查SQL语法
- 查看报告中的错误信息
- 手动在DM Manager中测试SQL
- 可能需要重新转换SQL
Q5: 执行速度慢
A: 正常现象
- 大文件需要更长时间
- 可以单独执行小文件测试
- disql是串行执行,比较稳定但不够快
📈 性能建议
1. 分批执行
对于大量SQL文件,建议分批执行:
# 先执行小的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. 按端口分组
如果有多个数据库端口,可以分别执行:
# 只执行5256端口的
node dm-executor.js output/schema1_dm.sql output/schema2_dm.sql
# 再执行5266端口的
node dm-executor.js output/schema3_dm.sql
🎯 优势
- 零额外依赖 - 只需Node.js和disql
- 最稳定 - 使用官方工具
- 完全自动 - 一键执行所有SQL
- 智能路由 - 自动识别schema并选择端口
- 详细报告 - JSON格式的执行报告
- 可重复执行 - 支持多次执行
📞 技术支持
遇到问题?检查:
- Node.js版本 (node -v)
- disql工具 (测试手动连接)
- 配置文件 (db-mapping.json)
- SQL文件 (output目录)
- 网络连接 (ping 219.142.42.183)
🎉 开始使用
# 1. 转换SQL
node converter.js
# 2. 执行SQL
node dm-executor.js output/*_dm.sql
# 或者直接双击
execute-all.bat
就这么简单! 🚀