ALTER TABLE - 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à.

ALTER TABLE

Questo comando modifica la definizione di una tabella del database Amazon Redshift o la tabella esterna di Amazon Redshift Spectrum. Questo comando aggiorna i valori e le proprietà impostati da CREATE TABLE o CREATE EXTERNAL TABLE.

Non è possibile eseguire ALTER TABLE su una tabella esterna all'interno di un blocco di transazione (BEGIN ... END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.

ALTER TABLE blocca le operazioni di lettura e scrittura della tabella fino al completamento della transazione che contiene l'operazione ALTER TABLE, a meno che nella documentazione non sia specificamente indicato che è possibile eseguire query sui dati o eseguire altre operazioni sulla tabella durante la modifica.

Privilegi richiesti

L'utente che modifica una tabella deve disporre del privilegio appropriato affinché il comando venga eseguito correttamente. A seconda del comando ALTER TABLE, è richiesto uno dei seguenti privilegi.

  • Superuser

  • Utenti con il privilegio ALTER TABLE

  • Il proprietario della tabella con il privilegio USAGE sullo schema

Sintassi

ALTER TABLE table_name
{
ADD table_constraint
| DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
| OWNER TO new_owner
| RENAME TO new_name
| RENAME COLUMN column_name TO new_name
| ALTER COLUMN column_name TYPE updated_varchar_data_type_size
| ALTER COLUMN column_name ENCODE new_encode_type
| ALTER COLUMN column_name ENCODE encode_type,
| ALTER COLUMN column_name ENCODE encode_type, .....;
| ALTER DISTKEY column_name
| ALTER DISTSTYLE ALL
| ALTER DISTSTYLE EVEN
| ALTER DISTSTYLE KEY DISTKEY column_name
| ALTER DISTSTYLE AUTO
| ALTER [COMPOUND] SORTKEY ( column_name [,...] )
| ALTER SORTKEY AUTO
| ALTER SORTKEY NONE
| ALTER ENCODE AUTO
| ADD [ COLUMN ] column_name column_type
  [ DEFAULT default_expr ]
  [ ENCODE encoding ]
  [ NOT NULL | NULL ]
  [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] |
| DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] 
| ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]}

where table_constraint is:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] )
| PRIMARY KEY ( column_name [, ... ] )
| FOREIGN KEY (column_name [, ... ] )
   REFERENCES  reftable [ ( refcolumn ) ]}

The following options apply only to external tables:

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
| SET FILE FORMAT format |
| SET TABLE PROPERTIES ('property_name'='property_value')
| PARTITION ( partition_column=partition_value [, ...] )
  SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' }
| ADD [IF NOT EXISTS]
    PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' }
    [, ... ]
| DROP PARTITION ( partition_column=partition_value [, ...] )  

Per ridurre il tempo necessario per eseguire il comando ALTER TABLE, è possibile combinare alcune clausole del comando ALTER TABLE.

Amazon Redshift supporta le seguenti combinazioni delle clausole ALTER TABLE:

ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);

Parametri

table_name

Nome della tabella da modificare. Specifica solo il nome della tabella o utilizzare il formato schema_name.table_name per utilizzare uno schema specifico. Le tabelle esterne devono essere qualificate da un nome di schema esterno. Inoltre puoi specificare un nome di vista se utilizzi l'istruzione ALTER TABLE per rinominare una vista o cambiare il proprietario. La lunghezza massima per il nome della tabella è 127 byte; i nomi più lunghi vengono troncati a 127 byte. Puoi utilizzare caratteri multibyte UTF-8 fino a un massimo di quattro byte. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.

ADD table_constraint

Clausola che aggiunge il vincolo specificato alla tabella. Per le descrizioni dei valori validi di table_constraint, vedi CREATE TABLE.

Nota

Non puoi aggiungere un vincolo della chiave primaria a una colonna nullable. Se la colonna è stata originariamente creata con il vincolo NOT NULL, puoi aggiungere il vincolo della chiave primaria.

DROP CONSTRAINT constraint_name

Clausola che rimuove il vincolo denominato dalla tabella. Per rimuovere un vincolo, specifica il nome del vincolo e non il tipo di vincolo. Per visualizzare i nomi dei vincoli di tabella, esegui la seguente query.

select constraint_name, constraint_type from information_schema.table_constraints;
RESTRICT

Clausola che rimuove solo il vincolo specificato. RESTRICT è un'opzione per DROP CONSTRAINT. RESTRICT non può essere usata con CASCADE.

CASCADE

Clausola che rimuove il vincolo specificato e tutto quello che dipende da quel vincolo. CASCADE è un'opzione per DROP CONSTRAINT. CASCADE non può essere usata con RESTRICT.

OWNER TO new_owner

Clausola che modifica il proprietario della tabella (o vista) sul valore new_owner.

RENAME TO new_name

Clausola che rinomina una tabella (o una vista) sul valore specificato in new_name. La lunghezza massima per il nome della tabella è 127 byte; i nomi più lunghi vengono troncati a 127 byte.

Non è possibile rinominare una tabella permanente con un nome che inizia con "#". Un nome di tabella che inizia con "#" indica una tabella temporanea.

Non puoi rinominare una tabella esterna.

ALTER COLUMN column_name TYPE updated_varchar_data_type_size

Una clausola che modifica le dimensioni di una colonna definita come un tipo di dati VARCHAR. Questa clausola supporta solo la modifica della dimensione di un tipo di dati VARCHAR. Considera i seguenti limiti:

  • Non puoi modificare una colonna con le codifiche di compressione BYTEDICT, RUNLENGTH, TEXT255 o TEXT32K.

  • Non è possibile ridurre le dimensioni al di sotto delle dimensioni massime dei dati esistenti.

  • Non puoi alterare le colonne con valori predefiniti.

  • Non puoi alterare le colonne con UNIQUE, PRIMARY KEY o FOREIGN KEY.

  • Non è possibile modificare le colonne all'interno di un blocco di transazione (BEGIN ... END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.

ALTER COLUMN column_name ENCODE new_encode_type

Una clausola che modifica la codifica di compressione di una colonna. Se si specifica la codifica di compressione per una colonna, la tabella non è più impostata su ENCODE AUTO. Per informazioni sulla codifica della compressione, consultare Utilizzo della compressione delle colonne.

Quando si modifica la codifica di compressione per una colonna, la tabella rimane disponibile per l'esecuzione di query.

Considera i seguenti limiti:

  • Non è possibile modificare una colonna con la stessa codifica definita per la colonna.

  • Non è possibile modificare la codifica per una colonna in una tabella con un sortkey interlacciato.

ALTER COLUMN column_name ENCODE encode_type, ALTER COLUMN column_name ENCODE encode_type, .....;

Una clausola che modifica la codifica di compressione di più colonne in un singolo comando. Per informazioni sulla codifica della compressione, consultare Utilizzo della compressione delle colonne.

Quando si modifica la codifica di compressione per una colonna, la tabella rimane disponibile per l'esecuzione di query.

Considera i seguenti limiti:

  • Non è possibile modificare più volte una colonna con lo stesso tipo di codifica o con un tipo di codifica diverso in un singolo comando.

  • Non è possibile modificare una colonna con la stessa codifica definita per la colonna.

  • Non è possibile modificare la codifica per una colonna in una tabella con un sortkey interlacciato.

ALTER DISTSTYLE ALL

Una clausola che modifica lo stile di distribuzione esistente di una tabella in ALL. Considera i seguenti aspetti:

  • ALTER DISTSTYLE, ALTER SORTKEY e VACUUM non possono essere eseguiti contemporaneamente sulla stessa tabella.

    • Se VACUUM è attualmente in esecuzione, l'esecuzione di ALTER DISTSTYLE ALL restituisce un errore.

    • Se ALTER DISTSTYLE è in esecuzione, il vacuum di background non viene avviato su una tabella.

  • Il comando ALTER DISTSTYLE ALL non è supportato per le tabelle con chiavi di ordinamento interlacciato e tabelle temporanee.

  • Se lo stile di distribuzione è stato precedentemente definito come AUTO, la tabella non è più un candidato per l'ottimizzazione automatica della tabella.

Per ulteriori informazioni su DISTSTYLE ALL, consultare CREATE TABLE.

ALTER DISTSTYLE EVEN

Una clausola che modifica lo stile di distribuzione esistente di una tabella in EVEN. Considera i seguenti aspetti:

  • ALTER DISTSYTLE, ALTER SORTKEY e VACUUM non possono essere eseguiti contemporaneamente sulla stessa tabella.

    • Se VACUUM è attualmente in esecuzione, l'esecuzione di ALTER DISTSTYLE EVEN restituisce un errore.

    • Se ALTER DISTSTYLE EVEN è in esecuzione, il vacuum di background non viene avviato su una tabella.

  • Il comando ALTER DISTSTYLE EVEN non è supportato per le tabelle con chiavi di ordinamento interlacciato e tabelle temporanee.

  • Se lo stile di distribuzione è stato precedentemente definito come AUTO, la tabella non è più un candidato per l'ottimizzazione automatica della tabella.

Per ulteriori informazioni su DISTSTYLE ALL EVEN, consultare CREATE TABLE.

ALTER DISTKEY column_name o ALTER DISTSTYLE KEY DISTKEY column_name

Una clausola che modifica la colonna utilizzata come chiave di distribuzione di una tabella. Considera i seguenti aspetti:

  • VACUUM e ALTER DISTKEY non possono essere eseguiti contestualmente sulla stessa tabella.

    • Se VACUUM è già in esecuzione, ALTER DISTKEY restituisce un errore.

    • Se ALTER DISTKEY è in esecuzione, il vacuum di background non viene avviato su una tabella.

    • Se ALTER DISTKEY è in esecuzione, il vacuum in primo piano restituisce un errore.

  • Su una tabella, è possibile eseguire solo un comando ALTER DISTKEY alla volta.

  • Il comando ALTER DISTKEY non è supportato sulle tabelle con chiavi di ordinamento interlacciato.

  • Se lo stile di distribuzione è stato precedentemente definito come AUTO, la tabella non è più un candidato per l'ottimizzazione automatica della tabella.

Quando si specifica DISTSTYLE KEY, i dati vengono distribuiti dai valori nella colonna DISTKEY. Per ulteriori informazioni su DISTSTYLE, consultare CREATE TABLE.

ALTER DISTSTYLE AUTO

Una clausola che modifica lo stile di distribuzione esistente di una tabella in AUTO.

Quando si modifica uno stile di distribuzione su AUTO, lo stile di distribuzione della tabella viene impostato come segue:

  • Una piccola tabella con DISTSTYLE ALL è convertita in AUTO(ALL).

  • Una piccola tabella con DISTSTYLE EVEN è convertita in AUTO(ALL).

  • Una piccola tabella con DISTSTYLE KEY è convertita in AUTO(ALL).

  • Una tabella grande con DISTSTYLE ALL è convertita in AUTO(ALL).

  • Una tabella grande con DISTSTYLE EVEN è convertita in AUTO(ALL).

  • Una tabella grande con DISTSTYLE KEY viene convertita in AUTO(KEY) e il DISTKEY viene conservato In questo caso, Amazon Redshift non apporta modifiche alla tabella.

Se Amazon Redshift determina che un nuovo stile o chiave di distribuzione migliorerà le prestazioni delle query, Amazon Redshift potrebbe modificare lo stile o la chiave di distribuzione della tabella in futuro. Ad esempio, Amazon Redshift potrebbe convertire una tabella con un DISTSTYLE di AUTO(KEY) in AUTO(EVEN) o viceversa. Per ulteriori informazioni sul comportamento in caso di modifica delle chiavi di distribuzione, tra cui la ridistribuzione dei dati e i blocchi, consulta i suggerimenti di Amazon Redshift Advisor.

Per ulteriori informazioni su DISTSTYLE AUTO, consultare CREATE TABLE.

Per visualizzare lo stile di distribuzione di una tabella, eseguire una query sulla vista del catalogo di sistema SVV_TABLE_INFO. Per ulteriori informazioni, consulta SVV_TABLE_INFO. Per visualizzare i suggerimenti di Amazon Redshift Advisor per le tabelle, eseguire una query sulla vista del catalogo di sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Per ulteriori informazioni, consulta SVV_ALTER_TABLE_RECOMMENDATIONS. Per visualizzare le azioni intraprese da Amazon Redshift, eseguire una query sulla vista del catalogo di sistema SVL_AUTO_WORKER_ACTION. Per ulteriori informazioni, consulta SVL_AUTO_WORKER_ACTION.

ALTER [COMPOUND] SORTKEY ( column_name [,...] )

Una clausola che modifica o aggiunge la chiave di ordinamento utilizzata per una tabella.

Quando si modifica una chiave di ordinamento, la codifica di compressione delle colonne nella chiave di ordinamento nuova o originale può cambiare. Se nessuna codifica è definita esplicitamente per la tabella, allora Amazon Redshift assegna automaticamente le codifiche di compressione come segue:

  • Le colonne definite come chiavi di ordinamento vengono assegnate alla compressione RAW.

  • Le colonne definite come tipi di dati BOOLEAN, REAL o DOUBLE PRECISION vengono assegnate alla compressione RAW.

  • Le colonne definite come SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP o TIMESTAMPTZ sono assegnate alla compressione AZ64.

  • Le colonne definite come CHAR o VARCHAR sono assegnate alla compressione LZO.

Considera i seguenti aspetti:

  • È possibile definire un massimo di 400 colonne per una chiave di ordinamento per tabella.

  • È possibile modificare una chiave di ordinamento interlacciata in una chiave di ordinamento composta o nessuna chiave di ordinamento. È possibile modificare una chiave di ordinamento interlacciata in una chiave di ordinamento composta o nessuna chiave di ordinamento.

  • Se la chiave di ordinamento è stata precedentemente definita come AUTO, la tabella non è più un candidato per l'ottimizzazione automatica della tabella.

  • Amazon Redshift consiglia di utilizzare la codifica RAW (senza compressione) per le colonne definite come chiavi di ordinamento. Quando si modifica una colonna per sceglierla come chiave di ordinamento, la compressione della colonna viene modificata in compressione RAW (senza compressione). Ciò può aumentare la quantità di archiviazione richiesta dalla tabella. L'aumento delle dimensioni della tabella dipende dalla definizione specifica della tabella e dal contenuto della tabella. Per ulteriori informazioni su questi componenti, consultare . Codifiche di compressione

Quando i dati vengono caricati in una tabella seguono l'ordine della chiave di ordinamento. Quando si modifica la chiave di ordinamento, Amazon Redshift riordina i dati. Per ulteriori informazioni su SORTKEY, consultare CREATE TABLE.

ALTER SORTKEY AUTO

Una clausola che modifica o aggiunge la chiave di ordinamento della tabella di destinazione ad AUTO.

Quando si modifica una chiave di ordinamento in AUTO, Amazon Redshift conserva la chiave di ordinamento esistente della tabella.

Se Amazon Redshift determina che una nuova chiave di ordinamento migliorerà le prestazioni delle query, Amazon Redshift potrebbe modificare la chiave di ordinamento della tabella in futuro.

Per ulteriori informazioni su SORTKEY AUTO, consultare CREATE TABLE.

Per visualizzare la chiave di ordinamento di una tabella, eseguire una query sulla vista del catalogo di sistema SVV_TABLE_INFO. Per ulteriori informazioni, consulta SVV_TABLE_INFO. Per visualizzare i suggerimenti di Amazon Redshift Advisor per le tabelle, eseguire una query sulla vista del catalogo di sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Per ulteriori informazioni, consulta SVV_ALTER_TABLE_RECOMMENDATIONS. Per visualizzare le azioni intraprese da Amazon Redshift, eseguire una query sulla vista del catalogo di sistema SVL_AUTO_WORKER_ACTION. Per ulteriori informazioni, consulta SVL_AUTO_WORKER_ACTION.

ALTER SORTKEY NONE

Una clausola che rimuove la chiave di ordinamento della tabella di destinazione.

Se la chiave di ordinamento è stata precedentemente definita come AUTO, la tabella non è più un candidato per l'ottimizzazione automatica della tabella.

ALTER ENCODE AUTO

Una clausola che modifica il tipo di codifica delle colonne della tabella di destinazione in AUTO. Quando si modifica la codifica in AUTO, Amazon Redshift conserva il tipo di codifica esistente delle colonne nella tabella. Quindi, se Amazon Redshift determina che un nuovo tipo di codifica può migliorare le prestazioni delle query, Amazon Redshift può modificare il tipo di codifica delle colonne della tabella.

Se si modifica una o più colonne per specificare una codifica, Amazon Redshift non regola più automaticamente la codifica per tutte le colonne della tabella. Le colonne mantengono le impostazioni di codifica correnti.

Le seguenti azioni non influiscono sull'impostazione ENCODE AUTO per la tabella:

  • Ridenominazione della tabella.

  • Modifica dell'impostazione DISTSTYLE o SORTKEY per la tabella.

  • Aggiunta o eliminazione di una colonna con un'impostazione ENCODE.

  • Utilizzo dell'opzione COMPUPDATE del comando COPY. Per ulteriori informazioni, consulta Operazioni di caricamento dati.

Per visualizzare la codifica di una tabella, eseguire una query sulla vista del catalogo di sistema SVV_TABLE_INFO. Per ulteriori informazioni, consulta SVV_TABLE_INFO.

RENAME COLUMN column_name TO new_name

Clausola che rinomina una colonna sul valore specificato in new_name. La lunghezza massima per il nome della colonna è 127 byte; i nomi più lunghi vengono troncati a 127 byte. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.

ADD [ COLUMN ] column_name

Clausola che aggiunge una colonna con il nome specificato alla tabella. Puoi aggiungere una sola colonna in ogni istruzione ALTER TABLE.

Non puoi aggiungere una colonna che sia la chiave di distribuzione (DISTKEY) o una chiave di ordinamento (SORTKEY) della tabella.

Non puoi utilizzare un comando ALTER TABLE ADD COLUMN per modificare i seguenti attributi di tabella e colonna:

  • UNIQUE

  • PRIMARY KEY

  • REFERENCES (chiave esterna)

  • IDENTITY o GENERATED BY DEFAULT AS IDENTITY

La lunghezza massima per il nome della colonna è 127 byte; i nomi più lunghi vengono troncati a 127 byte. Il numero massimo di colonne che puoi definire in una singola tabella è 1.600.

Le seguenti restrizioni si applicano quando si aggiunge una colonna a una tabella esterna:

  • Non puoi aggiungere una colonna a una tabella esterna con i vincoli di colonna DEFAULT, ENCODE, NOT NULL o NULL.

  • Non puoi aggiungere colonne a una tabella esterna definita utilizzando il formato file AVRO.

  • Se le pseudocolonne sono abilitate, il numero massimo di colonne che è possibile definire in una singola tabella esterna è 1.598. Se le pseudocolonne non sono abilitate, il numero massimo di colonne che puoi definire in una singola tabella è 1.600.

Per ulteriori informazioni, consulta CREATE EXTERNAL TABLE.

column_type

Tipo dei dati della colonna da aggiungere. Per le colonne CHAR e VARCHAR, puoi utilizzare la parola chiave MAX invece di dichiarare una lunghezza massima. MAX imposta la lunghezza massima a 4.096 byte per CHAR o a 65.535 byte per VARCHAR. La dimensione massima di un oggetto di tipo GEOMETRY è di 1.048.447 byte.

Per informazioni sui tipi di dati supportati da Amazon Redshift, consultare Tipi di dati.

DEFAULT default_expr

Clausola che assegna un valore di dati predefinito per la colonna. Il tipo di dati di default_expr deve corrispondere al tipo di dati della colonna. Il valore DEFAULT deve essere un'espressione senza variabili. Le sottoquery, i riferimenti incrociati ad altre colonne della tabella corrente e le funzioni definite dall'utente non sono consentiti.

default_expr è utilizzato in qualsiasi operazione INSERT che non specifica un valore per la colonna. Se non viene specificato alcun valore predefinito, il valore predefinito per la colonna è null.

Se un'operazione COPY incontra un campo nullo su una colonna che ha un valore DEFAULT e un vincolo NOT NULL, il comando COPY inserisce il valore di default_expr.

DEFAULT non è supportato per le tabelle esterne.

ENCODE encoding

La codifica della compressione per una colonna. Per impostazione predefinita, Amazon Redshift gestisce automaticamente la codifica di compressione per tutte le colonne di una tabella se non si specifica la codifica di compressione per qualsiasi colonna della tabella o se si specifica l'opzione ENCODE AUTO per la tabella.

Se si specifica la codifica di compressione per qualsiasi colonna della tabella o se non si specifica l'opzione ENCODE AUTO per la tabella, Amazon Redshift assegna automaticamente la codifica di compressione alle colonne per le quali non si specifica la codifica di compressione come segue:

  • Per impostazione predefinita, tutte le colonne nelle tabelle temporanee vengono assegnate alla compressione RAW.

  • Le colonne definite come chiavi di ordinamento vengono assegnate alla compressione RAW.

  • Alle colonne definite come tipi di dati BOOLEAN, REAL, DOUBLE PRECISION, GEOMETRY o GEOGRAPHY viene assegnata la compressione di tipo RAW.

  • Le colonne definite come SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP o TIMESTAMPTZ sono assegnate alla compressione AZ64.

  • Le colonne definite come CHAR, VARCHAR o VARBYTE sono assegnate alla compressione LZO.

Nota

Se non vuoi che una colonna venga compressa, specifica esplicitamente la codifica RAW.

Sono supportate le seguenti compression encodings:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (nessuna compressione)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

ENCODE non è supportato per le tabelle esterne.

NOT NULL | NULL

NOT NULL specifica che la colonna non può contenere valori null. NULL, il valore predefinito, specifica che la colonna accetta valori nulli.

NOT NULL e NULL non sono supportati per tabelle esterne.

COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }

Una clausola che specifica se la stringa di ricerca o il confronto sulla colonna è CASE_SENSITIVE o CASE_INSENSITIVE. Il valore di default corrisponde alla stessa configurazione corrente della distinzione tra maiuscole e minuscole del database.

Per informazioni sul confronto di database, utilizzare il comando seguente:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
DROP [ COLUMN ] column_name

Il nome della colonna da eliminare dalla tabella.

Non puoi rimuovere l'ultima colonna di una tabella. Una tabella deve avere almeno una colonna.

Non puoi rimuovere una colonna che sia la chiave di distribuzione (DISTKEY) o una chiave di ordinamento (SORTKEY) della tabella. Il comportamento predefinito per DROP COLUMN è RESTRICT se la colonna contiene oggetti dipendenti, ad esempio una vista, una chiave primaria, una chiave esterna o una restrizione UNIQUE.

Le seguenti restrizioni si applicano quando si rimuove una colonna da una tabella esterna:

  • Non puoi rimuovere una colonna da una tabella esterna se la colonna viene utilizzata come partizione.

  • Non puoi rimuovere una colonna da una tabella esterna definita utilizzando il formato file AVRO.

  • RESTRICT e CASCADE vengono ignorati per le tabelle esterne.

  • Non è possibile eliminare le colonne della tabella delle policy a cui viene fatto riferimento all'interno della definizione della policy a meno che non si elimini o si scolleghi la policy. Ciò vale anche quando viene specificata l'opzione CASCADE. È possibile eliminare altre colonne nella tabella delle policy.

Per ulteriori informazioni, consulta CREATE EXTERNAL TABLE.

RESTRICT

Quando viene utilizzato con DROP COLUMN, RESTRICT indica che la colonna da rimuovere non è stata rimossa, in questi casi:

  • Se una vista definita fa riferimento alla colonna che si vuole eliminare

  • Se una chiave esterna fa riferimento alla colonna

  • Se la colonna fa parte di una chiave multiparte

RESTRICT non può essere usata con CASCADE.

RESTRICT e CASCADE vengono ignorati per le tabelle esterne.

CASCADE

Se utilizzato con DROP COLUMN, rimuove la colonna specificata e tutto ciò che dipende da tale colonna. CASCADE non può essere usata con RESTRICT.

RESTRICT e CASCADE vengono ignorati per le tabelle esterne.

Le seguenti opzioni si applicano solo alle tabelle esterne.

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }

Il percorso della cartella Amazon S3 che contiene i file di dati o un file manifest che contiene un elenco di percorsi di oggetti Amazon S3. I bucket devono trovarsi nella stessa regione AWS del cluster Amazon Redshift. Per un elenco delle AWS regioni supportate, consulta. Considerazioni su Amazon Redshift Spectrum Per ulteriori informazioni sull'uso di un file manifest, vedi LOCATION nel riferimento CREATE EXTERNAL TABLE Parametri.

SET FILE FORMAT format

Il formato dei file di dati esterni.

I formati validi sono:

  • AVRO

  • PARQUET

  • RCFILE

  • SEQUENCEFILE

  • TEXTFILE

SET TABLE PROPERTIES ( 'property_name'='property_value')

Clausola che imposta la definizione della tabella delle proprietà della tabella per una tabella esterna.

Nota

Le proprietà della tabella rispettano la distinzione tra maiuscole e minuscole.

'numRows'='row_count'

Proprietà che imposta il valore numRows per la definizione della tabella. Per aggiornare in modo esplicito le statistiche di una tabella esterna, imposta la proprietà numRows in modo da indicare le dimensioni della tabella. Amazon Redshift non analizza le tabelle esterne per generare le statistiche delle tabelle che l'ottimizzatore di query utilizza per generare un piano di query. Se le statistiche della tabella non sono impostate per una tabella esterna, Amazon Redshift genera un piano di esecuzione della query. Il piano si basa sul presupposto che le tabelle esterne sono le tabelle più grandi e che quelle locali sono le più piccole.

'skip.header.line.count'='line_count'

Proprietà che imposta il numero di righe da saltare all'inizio di ogni file sorgente.

PARTITION ( partition_column=partition_value [, ...] SET LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' }

Clausola che imposta una nuova posizione per una o più colonne di partizione.

ADD [ IF NOT EXISTS ] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' } [, ... ]

Una clausola che aggiunge una o più partizioni. È possibile specificare più clausole PARTITION utilizzando una singola istruzione ALTER TABLE … ADD.

Nota

Se si utilizza il AWS Glue catalogo, è possibile aggiungere fino a 100 partizioni utilizzando una singola istruzione ALTER TABLE.

La clausola IF NOT EXISTS indica che se la partizione specificata esiste già, il comando non deve apportare modifiche. Indica inoltre che il comando deve restituire un messaggio che la partizione esiste, anziché terminare con un errore. Questa clausola è utile durante lo scripting, quindi lo script non fallisce se ALTER TABLE tenta di aggiungere una partizione già esistente.

DROP PARTITION (partition_column=partition_value [, ...] )

Clausola che rimuove la partizione specificata. La rimozione di una partizione altera solo i metadati della tabella esterna. I dati su Amazon S3 non sono interessati.

ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]

Una clausola che attiva o disattiva la sicurezza a livello di riga per una relazione.

Quando per una relazione è attivata la protezione a livello di riga, è possibile leggere solo le righe al livello di riga a cui la policy di sicurezza consente l'accesso. Quando non ci sono policy che consentono l'accesso alla relazione, non è possibile visualizzare alcuna riga dalla relazione. Solo gli utenti con privilegi avanzati e gli utenti o i ruoli che hanno il ruolo sys:secadmin possono impostare la clausola ROW LEVEL SECURITY. Per ulteriori informazioni, consulta Sicurezza a livello di riga.

  • [ CONJUNCTION TYPE { AND | OR } ]

    Una clausola che consente di scegliere il tipo di congiunzione della policy di sicurezza a livello di riga per una relazione. Quando a una relazione sono associate più policy di sicurezza a livello di riga, è possibile combinare le policy con la clausola AND oppure OR. Per impostazione predefinita, Amazon Redshift combina le policy RLS con la clausola AND. Gli utenti con privilegi avanzati, gli utenti o i ruoli che hanno il ruolo sys:secadmin possono utilizzare questa clausola per definire il tipo di combinazione della policy di sicurezza a livello di riga per una relazione. Per ulteriori informazioni, consulta Combinazione di più policy per utente.

  • FOR DATASHARES

    Una clausola che determina se è possibile accedere a una relazione protetta da RLS in un'unità di condivisione dati. Per impostazione predefinita, non è possibile accedere a una relazione protetta da RLS in un'unità di condivisione dati. Il comando ALTER TABLE ROW LEVEL SECURITY eseguito con questa clausola influisce solo sulla proprietà di accessibilità dell'unità di condivisione dati della relazione. La proprietà ROW LEVEL SECURITY non viene modificata.

    Se rendi accessibile una relazione protetta da RLS nelle unità di condivisione dati, la relazione non dispone di una sicurezza a livello di riga nel database con unità di condivisione dati sul lato consumer. La relazione mantiene la proprietà RLS sul lato producer.

Esempi

Per esempi che mostrano come utilizzare il comando ALTER TABLE, consultare quanto segue.