我正在为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。理想情况下,我希望将视图恢复到以前的方式,可能在同一查询事务中或作为脚本的一部分。
答案 0 :(得分:0)
只需删除并重新创建视图即可。这可能是剧本的一部分。
视图可能不构成事务的一部分,因此可能需要进行一些测试。
答案 1 :(得分:0)
在您的迁移过程中:
对于每个视图执行:
select definition from pg_views where viewname = 'my_view';
并存储所有结果。
执行所有视图:
drop view 'my_view'; // or rename only to have a rollback option
改变你的表格
执行步骤2中获取的创建视图命令