-- ============================================================================= -- 从 LLZQ-test 迁移测试数据到新结构 -- 源数据库:LLZQ-test(旧测试库,包含 billiards_ods/billiards_dwd/billiards_dws/etl_admin) -- 目标数据库:test_etl_feiqiu(新六层 schema)+ test_zqyy_app(业务应用库) -- -- 前置条件: -- 1. 已执行 db/etl_feiqiu/scripts/create_test_db.sql 创建 test_etl_feiqiu -- 2. 已执行 db/zqyy_app/scripts/create_test_db.sql 创建 test_zqyy_app -- 3. 当前用户对 LLZQ-test 有 SELECT 权限,对目标库有 INSERT 权限 -- -- 执行方式: -- psql -h -U -f migrate_test_data.sql -- -- 注意:需要根据实际表映射关系调整,以下为参考模板 -- ============================================================================= -- --------------------------------------------------------------------------- -- 第一部分:etl_admin → meta(调度/游标/运行记录) -- --------------------------------------------------------------------------- -- 迁移运行记录 INSERT INTO test_etl_feiqiu.meta.etl_run_log SELECT * FROM dblink( 'dbname=LLZQ-test', 'SELECT * FROM etl_admin.etl_run_log' ) AS t( -- 根据 meta.sql 中 etl_run_log 的实际列定义填充 -- 示例:run_id bigint, task_code text, started_at timestamptz, ... ); -- 迁移游标状态 INSERT INTO test_etl_feiqiu.meta.etl_cursor_state SELECT * FROM dblink( 'dbname=LLZQ-test', 'SELECT * FROM etl_admin.etl_cursor_state' ) AS t( -- 根据 meta.sql 中 etl_cursor_state 的实际列定义填充 ); -- --------------------------------------------------------------------------- -- 第二部分:billiards_ods → ods(ODS 原始数据) -- schema 名从 billiards_ods 改为 ods,表结构不变 -- --------------------------------------------------------------------------- -- 会员档案 INSERT INTO test_etl_feiqiu.ods.member_profiles SELECT * FROM dblink( 'dbname=LLZQ-test', 'SELECT * FROM billiards_ods.member_profiles' ) AS t( -- 根据 ods.sql 中 member_profiles 的实际列定义填充 ); -- 会员余额变动 INSERT INTO test_etl_feiqiu.ods.member_balance_changes SELECT * FROM dblink( 'dbname=LLZQ-test', 'SELECT * FROM billiards_ods.member_balance_changes' ) AS t( -- 根据 ods.sql 中 member_balance_changes 的实际列定义填充 ); -- ... 对 ods schema 中的每张表重复上述模式 ... -- 完整表清单参见 db/etl_feiqiu/schemas/ods.sql 中的 CREATE TABLE 语句 -- --------------------------------------------------------------------------- -- 第三部分:billiards_dwd → dwd(DWD 明细数据) -- schema 名从 billiards_dwd 改为 dwd,保留 main+EX 拆分 -- --------------------------------------------------------------------------- -- ... 对 dwd schema 中的每张表执行类似迁移 ... -- 完整表清单参见 db/etl_feiqiu/schemas/dwd.sql 中的 CREATE TABLE 语句 -- --------------------------------------------------------------------------- -- 第四部分:billiards_dws → dws(DWS 汇总数据) -- schema 名从 billiards_dws 改为 dws,表结构不变 -- --------------------------------------------------------------------------- -- ... 对 dws schema 中的每张表执行类似迁移 ... -- 完整表清单参见 db/etl_feiqiu/schemas/dws.sql 中的 CREATE TABLE 语句 -- --------------------------------------------------------------------------- -- 第五部分:core schema(新增层,无历史数据可迁移) -- core 层为新增的统一最小字段集层,需从 dwd 数据重新生成 -- --------------------------------------------------------------------------- -- 如需填充 core 层测试数据,可从已迁移的 dwd 数据中提取: -- INSERT INTO test_etl_feiqiu.core.dim_member (member_id, name, mobile, status, site_id) -- SELECT member_id, name, mobile, status, site_id -- FROM test_etl_feiqiu.dwd.dim_member_main; -- --------------------------------------------------------------------------- -- 第六部分:app schema(视图层,无需迁移数据) -- app 层仅包含视图和 RLS 策略,数据来自底层 schema -- --------------------------------------------------------------------------- -- 无需数据迁移,视图会自动引用底层表数据 -- --------------------------------------------------------------------------- -- 迁移完成后验证 -- --------------------------------------------------------------------------- -- 验证各 schema 表行数是否与源库一致 -- SELECT schemaname, relname, n_live_tup -- FROM pg_stat_user_tables -- WHERE schemaname IN ('meta', 'ods', 'dwd', 'dws', 'core') -- ORDER BY schemaname, relname;