PowerDesigner 中进行逆向工程时排除系统对象

发布于:2025-08-31 ⋅ 阅读:(23) ⋅ 点赞:(0)

在 PowerDesigner 中进行逆向工程时排除系统对象,可通过以下方法实现(以最新版 PD 17.7 为例):

方法一:通过对象过滤器排除(推荐)

  1. 启动逆向工程
    DatabaseReverse Engineer Database → 选择数据源

  2. 进入对象选择界面
    Selection 标签页点击 Filter… 按钮

  3. 设置过滤规则

-- 通用排除模板(根据DB类型调整):
OBJECT_SCHEMA NOT IN (
'sys', 'information_schema', 'pg_catalog',
'mysql', 'performance_schema', 'dbo'
)
AND OBJECT_NAME NOT LIKE 'sp_%'
AND OBJECT_NAME NOT LIKE 'pg_%'
AND OBJECT_NAME NOT LIKE 'msrep%'

不同数据库的排除方案

数据库 排除条件示例
SQL Server SCHEMA_NAME <> 'sys' AND NAME NOT LIKE 'sp_%'
PostgreSQL table_schema NOT IN ('pg_catalog','information_schema')
Oracle OWNER NOT IN ('SYS','SYSTEM','MDSYS','CTXSYS')
MySQL TABLE_SCHEMA NOT IN ('information_schema','performance_schema','mysql')
  1. 应用过滤器
    ✅ 勾选 Use filter 并保存规则

方法二:通过选项设置全局排除

  1. 打开模型选项
    ToolsModel Options

  2. 配置排除规则
    路径:Model SettingsTableSelection

Exclude objects where:
[x] Object name matches: sp_*; ms*; pg_*; __*
[x] Owner matches: sys; dbo; information_schema; pg_*

方法三:逆向工程后批量删除

  1. 使用查询工具删除对象
    EditQuery... 执行删除脚本:
-- 示例:删除所有系统表
DELETE FROM %TABLE%
WHERE ObjectType = 'Table'
AND (Owner = 'sys' OR Name LIKE 'sp_%')
  1. 使用列表编辑器批量删除
    EditList Editor → 按 Owner 排序 → 全选系统对象 → Delete

特殊技巧:修改元数据查询

  1. 编辑逆向工程脚本
    ToolsResourcesDBMS → 选择数据库类型

  2. 修改系统表查询语句
    找到 SqlQuery 节点,例如修改表查询:

<SqlQuery id="Tables">
SELECT ... FROM all_tables
WHERE OWNER NOT IN ('SYS','SYSTEM')<!-- 添加排除 -->
</SqlQuery>

常见系统对象标识

数据库 系统模式/前缀
SQL Server sys, dbo.sp_, dt_
PostgreSQL pg_, information_schema
Oracle SYS, SYSTEM, DBSNMP
MySQL information_schema, mysql

验证效果

完成过滤后,在逆向工程结果窗口:

  1. 检查对象列表是否包含系统表
  2. 查看 SQL 预览窗口的 WHERE 条件
  3. 确认模型中的对象都是业务对象

重要提示:对于生产环境,建议先在测试库验证过滤规则,避免误删业务对象。不同 PD 版本界面可能略有差异,但核心过滤原理相同。


网站公告

今日签到

点亮在社区的每一天
去签到