Snowflake如何将VIEW保存至指定Schema而非默认PUBLIC Schema
Snowflake指定Schema创建/移动视图操作方法
你之前创建的视图默认落在PUBLIC schema,是因为执行USE DATABASE PROD_DWH后,会话默认schema为PUBLIC,创建对象时未指定schema就会默认放在当前会话的默认schema下。你可以按照以下两种场景操作:
场景1:还未创建视图,直接指定目标schema创建
创建时写全视图的三级路径(数据库.模式.视图名)即可,修改后的代码如下(已修正你原代码中字段后多余的逗号语法问题):
USE DATABASE PROD_DWH; CREATE VIEW DBT_USER_MARKT.new AS SELECT cast(dwh as int) AS dwh_masterclient_id FROM INGEST.ISSUE;
如果你后续大量操作都在DBT_USER_MARKT schema下,可以先切换默认schema,后续创建对象不需要重复指定schema:
-- 切换到目标数据库和schema USE SCHEMA PROD_DWH.DBT_USER_MARKT; -- 此时创建的new视图默认落在DBT_USER_MARKT schema下 CREATE VIEW new AS SELECT cast(dwh as int) AS dwh_masterclient_id FROM INGEST.ISSUE;
场景2:已经在PUBLIC schema创建了视图,需要移动到目标schema
使用ALTER VIEW RENAME语法直接跨schema移动视图即可:
ALTER VIEW PROD_DWH.PUBLIC.new RENAME TO PROD_DWH.DBT_USER_MARKT.new;
注意事项
- 操作前需确认你的账号拥有
DBT_USER_MARKTschema的CREATE VIEW权限,移动操作还需要原视图的所有权和目标schema的写入权限 - 视图移动后,原有引用
PROD_DWH.PUBLIC.new的查询/下游对象会失效,需要同步修改引用路径为新的路径 - 操作完成后可以执行
SHOW VIEWS IN SCHEMA PROD_DWH.DBT_USER_MARKT;验证视图是否创建/移动成功
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

