2014-04-17 2 views

Antwort

1

Scheint nicht möglich zu sein. Einfacher erstellen Sie die Tabelle aus dem alten Population.

+0

Danke, dachte ich habe etwas gefehlt. Es wäre einfacher gewesen, 'alter table XXX alterstyle an alle zu betreiben;', aber das ist meine Meinung. – dudu1982

+0

Das ist nett, wenn Sie keine anderen Attribute für eine Tabelle oder eine Komprimierung haben. Alle mir Felder sind komprimiert, so dass es nicht geht. – dudu1982

6

Der einfachste Weg, die ich gefunden habe ist folgendes zu verwenden:

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; 

Auf diese Weise können Sie die distkey oder diststyle einer Tabelle sind, ohne zu wissen, welche Spalten in der Tabelle leicht ändern zu. Sie müssen nur den Namen der Tabelle kennen.

+1

Von docs "CREATE TABLE AS (CTAS) -Tabellen erben keine Komprimierungscodierungen, Einschränkungen, Identitätsspalten, Standardspaltenwerte oder den Primärschlüssel aus der Tabelle, aus der sie erstellt wurden." Die obige Abfrage kopiert die Komprimierungstechniken alter Tabellen nicht. Schauen Sie sich http://docs.aws.amazon.com/redshift/latest/dg/r_CTAS_usage_notes.html an – imVJ