2014-04-17 9 views

Odpowiedz

1

Wygląda na niemożliwy. Łatwiejsze odtworzenie tabeli wypełnionej ze starego.

+0

Dzięki, pomyślałem, że czegoś mi brakowało. Łatwiej byłoby uruchomić 'alter table XXX alter diststyle to all;', ale takie jest moje zdanie. – dudu1982

+0

To jest miłe, jeśli nie masz żadnych innych atrybutów dla tabeli lub kompresji. wszystkie pola są skompresowane, więc nie ma wyjścia. – dudu1982

6

Najprostszym sposobem znalazłem jest użycie następujących:

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; 

Pozwala to na łatwe modyfikowanie distkey lub diststyle stołu, nie wiedząc nawet, co kolumny są w tej tabeli. Musisz tylko znać nazwę stołu.

+1

Z dokumentów "Tabele CREATE TABLE AS (CTAS) nie dziedziczą kodowania kompresji, więzów, kolumn tożsamości, domyślnych wartości kolumn ani klucza podstawowego z tabeli, z której zostały utworzone." Powyższe zapytanie nie skopiuje technik kompresji starej tabeli. Sprawdź http://docs.aws.amazon.com/redshift/latest/dg/r_CTAS_usage_notes.html – imVJ