You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比Snowflake中DEV与PROD库指定Schema下各视图的记录数

用Snowflake游标实现DEV与PROD视图记录数对比

当然可以用游标实现这个需求,以下是具体的实现方案:

实现思路

通过游标从PROD库的INFORMATION_SCHEMA.TABLES中动态获取指定Schema下的视图列表,逐个统计DEV和PROD库中对应视图的记录数,最终将结果汇总到临时表中输出对比表格。

完整SQL代码

-- 创建临时表存储对比结果
CREATE OR REPLACE TEMPORARY TABLE VIEW_ROW_COUNT_COMPARISON (
    VIEW_NAME VARCHAR,
    DEV_ROW_COUNT NUMBER,
    PROD_ROW_COUNT NUMBER
);

-- 声明游标,获取PROD库指定Schema下的视图列表
DECLARE
    view_cursor CURSOR FOR
        SELECT TABLE_NAME
        FROM Database_PROD.INFORMATION_SCHEMA.TABLES
        WHERE TABLE_CATALOG = 'Database_PROD'
        AND TABLE_TYPE = 'VIEW'
        AND TABLE_SCHEMA = 'Schema';
    v_view_name VARCHAR;
    v_dev_count NUMBER;
    v_prod_count NUMBER;
BEGIN
    -- 遍历游标中的每个视图
    FOR view_rec IN view_cursor DO
        v_view_name := view_rec.TABLE_NAME;
        
        -- 统计DEV库中该视图的记录数
        EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM Database_DEV.Schema.' || v_view_name INTO v_dev_count;
        
        -- 统计PROD库中该视图的记录数
        EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM Database_PROD.Schema.' || v_view_name INTO v_prod_count;
        
        -- 将结果插入临时表
        INSERT INTO VIEW_ROW_COUNT_COMPARISON (VIEW_NAME, DEV_ROW_COUNT, PROD_ROW_COUNT)
        VALUES (v_view_name, v_dev_count, v_prod_count);
    END FOR;
END;

-- 查询对比结果
SELECT * FROM VIEW_ROW_COUNT_COMPARISON;

关键说明

  • 临时表作用:用来持久化对比结果,方便后续查询、筛选或导出
  • 游标动态获取视图:确保自动获取PROD库指定Schema下的所有视图,无需手动维护视图列表
  • 动态SQL执行:通过EXECUTE IMMEDIATE拼接视图名称,实现对每个视图的记录数统计
  • 循环处理逻辑:逐个遍历视图,完成DEV与PROD的计数并插入结果表

输出示例

执行完成后,查询临时表会得到如下格式的对比结果:

VIEW_NAMEDEV_ROW_COUNTPROD_ROW_COUNT
View0110001000
View02500501
View0320002000

内容的提问来源于stack exchange,提问作者Karol P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:32