数据迁移指南.md 4.9 KB

湛江智慧人社项目 - 数据迁移指南

1. 概述

本项目启动依赖于一系列核心配置数据(如字典、菜单、工作流配置等)。由于 ZJRS_YWXT.sql 仅包含表结构,为了让测试环境能够正常运行并拥有完整的系统功能,需要从正式环境(或预发布环境)导出以下关键表的数据。

2. 需迁移表清单

2.1 系统基础配置 (System Configuration)

这些表控制系统的基本运行参数和数据字典,缺失会导致下拉框空白或系统报错。 | 表名 | 描述 | 重要性 | | :--- | :--- | :--- | | AA01 | 系统参数表 (System Parameters) | 高 | | AA10 | 数据字典表 (Data Dictionary) | 极高 | | FW_SYSMESSAGE | 系统消息提示信息 | 中 | | FW_HELP | 系统帮助信息 | 低 | | FW_BIGDICT_MAINTAIN | 大字典维护表 | 中 |

2.2 组织架构与权限 (Organization & Rights)

这些表定义了谁可以登录系统以及他们能看到什么菜单。 | 表名 | 描述 | 重要性 | | :--- | :--- | :--- | | FW_SYSORG | 系统机构表 (System Organization) | 高 | | FW_OPERATEUNIT | 经办单位表 (Operating Units) | 高 | | FW_OPERATOR | 操作员表 (Operators) | 高 | | FW_RIGHT | 菜单与权限定义表 (Menus & Rights) | 极高 | | FW_RIGHT2RESOURCE | 权限资源关联表 (URL拦截配置) | 高 | | FW_ROLE | 角色表 (Roles) | 高 | | FW_ROLE2RIGHT | 角色-权限关联表 | 高 | | FW_OPERATOR2RIGHT | 操作员-权限关联表 (直接授权) | 高 | | FW_OPERATOR2ROLE | 操作员-角色关联表 | 高 |

2.3 界面配置 (UI Configuration)

框架的核心部分,决定了列表(Grid)和表单(Form)如何渲染。如果缺失,大部分业务页面将无法显示。 | 表名 | 描述 | 重要性 | | :--- | :--- | :--- | | FW_GENLIST_CONF | 通用列表配置 (Grid Configuration) | 极高 | | FW_GENTBL_CONF | 通用表单配置 (Form Configuration) | 极高 | | FW_QUERYSQL | 通用查询SQL配置 | 高 |

2.4 报表与打印 (Reports & Printing)

表名 描述 重要性
FW_PRINT_CONF 打印模板配置
FW_PRINT_CLIENTCONFIG 客户端打印配置
FW_REPORT_CONF 报表工具配置

2.5 工作流配置 (Workflow)

如果系统涉及业务流程流转,以下表数据必不可少。 | 表名 | 描述 | 重要性 | | :--- | :--- | :--- | | WF_ACTION_DEF | 流程环节定义 | 高 | | WF_ACTION_DEF2TASK | 环节与任务映射 | 高 | | FW_WF_DESIGNER | 流程设计器图数据 | 中 |

2.6 其他 (Others)

表名 描述 重要性
FW_YXZLINFO_CONF 影像资料配置
FW_LOG4BUSS 业务日志配置

3. 迁移建议

  1. 工具: 推荐使用 Oracle exp/impexpdp/impdp 工具,或者使用 PL/SQL Developer 的 "Export Tables" 功能。
  2. 顺序: 建议优先导入 AA10 (字典) 和 FW_GENLIST_CONF/FW_GENTBL_CONF (界面配置),因为它们是系统运行的基石。
  3. 冲突处理: 如果测试库中已有测试数据(如 init_test_data.sql 生成的数据),导入时请注意主键冲突,建议先清空相关表或选择 "Update" 模式(如果工具支持)。

4. 数据量分析脚本

在正式环境执行以下 SQL 语句,可快速评估需导出表的记录条数及占用空间大小,以便选择合适的导出时间和方式。

-- 查询迁移相关表的记录数和占用空间 (单位: MB)
SELECT
    T.TABLE_NAME AS "表名",
    T.NUM_ROWS AS "预估行数",
    ROUND(S.BYTES / 1024 / 1024, 2) AS "占用空间(MB)",
    'exp ' || USER || '/' || 'PASSWORD' || ' tables=' || T.TABLE_NAME || ' file=' || T.TABLE_NAME || '.dmp' AS "导出命令参考"
FROM
    USER_TABLES T
LEFT JOIN
    (SELECT SEGMENT_NAME, SUM(BYTES) BYTES FROM USER_SEGMENTS GROUP BY SEGMENT_NAME) S
ON
    T.TABLE_NAME = S.SEGMENT_NAME
WHERE
    T.TABLE_NAME IN (
        -- 1. 系统配置
        'AA01', 'AA10', 'FW_SYSMESSAGE', 'FW_HELP', 'FW_BIGDICT_MAINTAIN',
        -- 2. 权限与组织
        'FW_SYSORG', 'FW_OPERATEUNIT', 'FW_OPERATOR', 'FW_RIGHT', 'FW_RIGHT2RESOURCE',
        'FW_ROLE', 'FW_ROLE2RIGHT', 'FW_OPERATOR2RIGHT', 'FW_OPERATOR2ROLE',
        -- 3. 界面配置
        'FW_GENLIST_CONF', 'FW_GENTBL_CONF', 'FW_QUERYSQL',
        -- 4. 报表打印
        'FW_PRINT_CONF', 'FW_PRINT_CLIENTCONFIG', 'FW_REPORT_CONF',
        -- 5. 工作流
        'WF_ACTION_DEF', 'WF_ACTION_DEF2TASK', 'FW_WF_DESIGNER',
        -- 6. 其他
        'FW_YXZLINFO_CONF', 'FW_LOG4BUSS'
    )
ORDER BY
    S.BYTES DESC NULLS LAST;

注意:

  • NUM_ROWS 字段来源于数据库统计信息,可能不是实时的。如果需要精确行数,请使用 SELECT COUNT(*)
  • 如果表空间很大(例如超过 1GB),建议使用 Data Pump (expdp) 进行导出以提高效率。