在redshift中改变现有表中的diststyle.可能吗?

dud*_*982 9 amazon-redshift

而不是丢弃一个表并重新创建它,因为diststyle我希望改变表的所有内容diststyle,这可能吗?

谢谢!

lin*_*nqu 11

现在可以使用了ALTER TABLE table_name ALTER DISTSTYLE KEY DISTKEY column_name,接下来应该是VACUUM SORT ONLY table_name

有关更多详细信息,请参阅文档。该表将在集群上重新分布:

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


Gui*_*Sim 9

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

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;
Run Code Online (Sandbox Code Playgroud)

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

  • 从文档"CREATE TABLE AS(CTAS)表不继承压缩编码,约束,标识列,默认列值或创建它们的表中的主键." 上面的查询不会复制旧表的压缩技术.查看http://docs.aws.amazon.com/redshift/latest/dg/r_CTAS_usage_notes.html (4认同)

Dan*_*pov 1

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