如何在Snowflake中实现Schema不存在则创建的功能
Snowflake 实现指定Schema不存在时自动创建的方案
Snowflake原生支持IF NOT EXISTS语法,不需要像T-SQL那样额外查询系统表,最简实现方式如下:
CREATE SCHEMA IF NOT EXISTS CBS;
注意事项
- Snowflake中标识符默认不区分大小写,不需要额外加单引号包裹,如果你需要保留大小写或者Schema名包含特殊字符,改用双引号包裹即可:
CREATE SCHEMA IF NOT EXISTS "CBS"; - 你也可以直接指定Schema所属的数据库、配置注释等附加参数,示例如下:
-- 指定归属MY_DB数据库,添加备注 CREATE SCHEMA IF NOT EXISTS MY_DB.CBS COMMENT = 'CBS业务专用Schema';
如果你确实需要通过判断系统视图的方式实现(比如在存储过程、脚本块中做复杂逻辑判断),可以查询Snowflake自带的INFORMATION_SCHEMA系统视图,写法如下:
BEGIN IF (NOT EXISTS( SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'CBS' -- 可加条件限定所属数据库,避免跨库匹配 AND CATALOG_NAME = CURRENT_DATABASE() )) THEN CREATE SCHEMA CBS; END IF; END;
内容的提问来源于stack exchange,提问作者user1810575
相关产品推荐
相关产品推荐

