Come menzionato da Yaniv Kessler, non è possibile aggiungere o modificare distkey e ordinare la chiave dopo aver creato una tabella, e si deve ricreare una tabella e copiare tutti i dati nella nuova tabella. È possibile utilizzare il seguente formato SQL per ricreare una tabella con un nuovo design.
ALTER TABLE test_table RENAME TO old_test_table;
CREATE TABLE new_test_table([new table columns]);
INSERT INTO new_test_table (SELECT * FROM old_test_table);
ALTER TABLE new_test_table RENAME TO test_table;
DROP TABLE old_test_table;
Nella mia esperienza, questo SQL è utilizzato non solo per cambiare distkey e SortKey, ma anche impostare la codifica (compressione) tipo.
fonte
2013-11-21 07:27:38
Questa è la migliore risposta. Potrei aggiungere che potrebbe essere più sicuro eseguire la ridenominazione della tabella una volta completata l'operazione. –
Questo è abbastanza tardi, ma mi trovo nella stessa situazione e ho fatto qualche ricerca su quale sarebbe stata la prestazione per questo tipo di operazione, assumendo che la tabella sia grande. I documenti di redshift menzionano che INSERT INTO dovrebbe essere usato con cautela, favorendo i comandi COPY o CREATE TABLE AS. Gli [esempi per CTAS] (http://docs.aws.amazon.com/redshift/latest/dg/r_CTAS_examples.html) menzionano esplicitamente questo problema. – paulsef11
Il problema con questo metodo è che se si dispone di viste in base alla tabella originale, la caduta non funzionerà. – Pasha