Esempi di CTAS - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di CTAS

Il seguente esempio crea una tabella chiamata EVENT_BACKUP per la tabella EVENT:

create table event_backup as select * from event;

La tabella risultante eredita le chiavi di distribuzione e ordinamento dalla tabella EVENT.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'event_backup'; column | type | encoding | distkey | sortkey ----------+-----------------------------+----------+---------+-------- catid | smallint | none | false | 0 dateid | smallint | none | false | 1 eventid | integer | none | true | 0 eventname | character varying(200) | none | false | 0 starttime | timestamp without time zone | none | false | 0 venueid | smallint | none | false | 0

Il seguente comando crea una nuova tabella chiamata EVENTDISTSORT selezionando quattro colonne dalla tabella EVENT. La nuova tabella viene distribuita da EVENTID e ordinata per EVENTID e DATEID:

create table eventdistsort distkey (1) sortkey (1,3) as select eventid, venueid, dateid, eventname from event;

Il risultato è illustrato di seguito.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdistsort'; column | type | encoding | distkey | sortkey ---------+------------------------+----------+---------+------- eventid | integer | none | t | 1 venueid | smallint | none | f | 0 dateid | smallint | none | f | 2 eventname | character varying(200)| none | f | 0

Puoi creare esattamente la stessa tabella utilizzando i nomi delle colonne per le chiavi di distribuzione e ordinamento. Ad esempio:

create table eventdistsort1 distkey (eventid) sortkey (eventid, dateid) as select eventid, venueid, dateid, eventname from event;

La seguente istruzione applica la distribuzione uniforme alla tabella ma non definisce una chiave di ordinamento esplicita.

create table eventdisteven diststyle even as select eventid, venueid, dateid, eventname from event;

La tabella non eredita la chiave di ordinamento dalla tabella EVENT (EVENTID) perché la distribuzione EVEN è specificata per la nuova tabella. La nuova tabella non ha la chiave di ordinamento e la chiave di distribuzione.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdisteven'; column | type | encoding | distkey | sortkey ----------+------------------------+----------+---------+--------- eventid | integer | none | f | 0 venueid | smallint | none | f | 0 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0

La seguente istruzione applica la distribuzione uniforme e definisce una chiave di ordinamento:

create table eventdistevensort diststyle even sortkey (venueid) as select eventid, venueid, dateid, eventname from event;

La tabella risultante ha una chiave di ordinamento ma non una chiave di distribuzione.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdistevensort'; column | type | encoding | distkey | sortkey ----------+------------------------+----------+---------+------- eventid | integer | none | f | 0 venueid | smallint | none | f | 1 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0

La seguente istruzione ridistribuisce la tabella EVENT su una colonna chiave diversa dai dati in entrata che sono ordinati sulla colonna EVENTID e non definisce la colonna SORTKEY e quindi la tabella non è ordinata.

create table venuedistevent distkey(venueid) as select * from event;

Il risultato è illustrato di seguito.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'venuedistevent'; column | type | encoding | distkey | sortkey ----------+-----------------------------+----------+---------+------- eventid | integer | none | f | 0 venueid | smallint | none | t | 0 catid | smallint | none | f | 0 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0 starttime | timestamp without time zone | none | f | 0