深度复制表时如何迁移从属视图

时间:2016-05-19 01:35:25

标签: amazon-redshift

我正在为redshift中的所有表添加distkey / sortkey,并希望自动执行此操作。我正在做以下事情:

ALTER TABLE table RENAME TO tmp_table;
CREATE TABLE table 
distkey(id) 
sortkey(id) 
AS 
select * from tmp_table;
DROP TABLE tmp_table;

除非视图不迁移,否则这很有效。当您使用ALTER TABLE时,现有视图将指向tmp_table。理想情况下,我希望将视图恢复到以前的方式,可能在同一查询事务中或作为脚本的一部分。

2 个答案:

答案 0 :(得分:0)

只需删除并重新创建视图即可。这可能是剧本的一部分。

视图可能不构成事务的一部分,因此可能需要进行一些测试。

答案 1 :(得分:0)

在您的迁移过程中:

  1. 对于每个视图执行:

    select definition from pg_views where viewname = 'my_view';
    
  2. 并存储所有结果。

  3. 执行所有视图:

    drop view 'my_view'; // or rename only to have a rollback option
    
  4. 改变你的表格

  5. 执行步骤2中获取的创建视图命令