这是一个关于创建视图的雪花问题。
我们需要从一个源重新创建目标数据库中的对象列表。其中有些是表,有些是视图。很多可能在目标中已经存在,必须先放弃。
对于所有表,克隆工作是没有问题的。
CREATE OR REPLACE TABLE TO_DB.X CLONE FROM_DB.X;
但是有些对象是视图,这就会导致一个错误和潜在的(?)另一个问题。
1) 错误: 对象'X'已经作为view存在 2) 如果它不存在,那么View将被创建为Table。视图将被创建为表
所以我们需要确保Views被创建为VIEWS而不是表.怎么做?
谢谢你。
我没有100%理解你的问题。 如果你想克隆视图,你不能专门克隆一个视图。 只有当模式或数据库被克隆时,视图才会被克隆(然后视图会被克隆为这些克隆中的子对象)。
如果你试图从from_db到to_db中重新创建一个视图,我建议使用 get_ddl()
函数,然后在 "to "模式数据库中执行其结果。
你问的是这个问题吗?
除非你明确地执行从视图到表的CTAS,否则视图不会被创建为表。 在CLONE操作中不会发生这种情况。