# 达梦数据库自动执行器使用指南 ## ✅ 完整可行方案(零额外依赖) 基于**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 ``` **就这么简单!** 🚀