【问题标题】:alter diststyle in an existing table in redshift. is it possible?在 redshift 中更改现有表中的 diststyle。可能吗?
【发布时间】:2014-06-01 18:26:10
【问题描述】:

我希望更改表的diststyle,而不是删除表并将其重新创建为diststyle,这可能吗?

谢谢!

【问题讨论】:

    标签: amazon-redshift


    【解决方案1】:

    似乎不可能。更容易重新创建从旧表填充的表。

    【讨论】:

    • 谢谢,我以为我错过了什么。运行alter table XXX alter diststyle to all; 会更容易,但这是我的意见。
    • 如果您没有任何其他属性用于表或压缩,这很好。所有的 me 字段都被压缩了,所以不行。
    【解决方案2】:

    我发现最简单的方法是使用以下方法:

    BEGIN;
    
    CREATE TABLE mytable_tmp
    DISTSTYLE ALL -- You can also use DISTKEY(some_column) or DISTSTYLE EVEN
    AS SELECT * FROM mytable;
    
    DROP TABLE mytable;
    ALTER TABLE mytable_tmp RENAME TO mytable;
    
    COMMIT;
    

    这使您可以轻松地修改表的 distkey 或 diststyle,甚至不知道该表中有哪些列。您只需要知道表的名称。

    【讨论】:

    【解决方案3】:

    现在可以使用ALTER TABLE table_name ALTER DISTSTYLE KEY DISTKEY column_name,后面应该是VACUUM SORT ONLY table_name

    see docs for more details。该表将在集群上重新分布:

    指定 DISTSTYLE KEY 时,数据按 DISTKEY 列中的值分布。有关 DISTSTYLE 的更多信息,请参阅 ...

    【讨论】:

    • ALTER 仅支持 ALL 和 KEY 样式,不支持 EVEN 或 AUTO。
    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多