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

6.9 KiB
Raw Blame History

达梦数据库自动执行器使用指南

完整可行方案(零额外依赖)

基于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: 检查配置

  1. db-mapping.json中的密码是否正确
  2. 数据库是否可访问
  3. 端口是否正确

测试连接:

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文件建议分批执行

# 先执行小的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

🎯 优势

  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)

🎉 开始使用

# 1. 转换SQL
node converter.js

# 2. 执行SQL
node dm-executor.js output/*_dm.sql

# 或者直接双击
execute-all.bat

就这么简单! 🚀