Snowflake过程:基于表中的列创建模式


  1. RunSHOW SCHEMAS IN DATABASE D_DATAVAULT获取D_DATAVAULT
  2. 中所有可用模式的列表
  3. 放置名称
  4. 循环创建模式克隆使用向量或列表

项目1-3的视觉辅助

注:克隆数据库不适用于我们。我们希望保留模式的所有权/私有权。

输出应该是在新数据库中创建的模式。

可以使用雪花脚本实现此效果:

<<ul>
  • 大纲视图/gh>
  • 基于指针的FOR循环
  • 立即执行
  • 主要块:

    DECLARE
    sql TEXT;
    
    schema_cursor CURSOR FOR
    SELECT SCHEMA_NAME
    FROM D_DATAVAULT.INFORMATION_SCHEMA.SCHEMATA
    WHERE SCHEMA_NAME NOT IN ('PUBLIC', 'INFORMATION_SCHEMA');
    BEGIN
    FOR record IN schema_cursor DO
    sql := REPLACE('CREATE SCHEMA TARGET.<schema> CLONE D_DATAVAULT.<schema>'
    , '<schema>', record.schema_name);
    
    EXECUTE IMMEDIATE :sql;
    END FOR;
    END;
    

    输入:

    CREATE OR REPLACE DATABASE D_DATAVAULT;
    CREATE SCHEMA SCH_A;
    CREATE SCHEMA SCH_B;
    CREATE SCHEMA SCH_C;
    CREATE DATABASE TARGET;
    -- no user defined schemas 
    

    输出:

    SHOW SCHEMAS IN DATABASE TARGET;
    -- INFORMATION_SCHEMA
    -- PUBLIC
    -- SCH_A
    -- SCH_B
    -- SCH_C
    

    最新更新