ALTER TABLE - Amazon Redshift

ALTER TABLE

Esse comando altera a definição de uma tabela do Amazon Redshift ou de uma tabela externa do Amazon Redshift Spectrum. Esse comando atualiza os valores e propriedades definidos por CRIAR TABELA ou CREATE EXTERNAL TABLE.

Não é possível executar ALTER TABLE em uma tabela externa em um bloco de transação (BEGIN ... END). Para obter mais informações sobre transações, consulte Isolamento serializável.

ALTER TABLE bloqueia a tabela para operações de leitura e gravação até que a transação envolvendo a operação ALTER TABLE seja concluída, a menos que seja especificamente indicado na documentação que você pode consultar dados ou executar outras operações na tabela enquanto ela estiver sendo alterada.

Privilégios obrigatórios

O usuário que altera uma tabela precisa do privilégio adequado para que o comando seja bem-sucedido. Dependendo do comando ALTER TABLE, é necessário um dos privilégios a seguir.

  • Superusuário

  • Usuários com o privilégio ALTER TABLE

  • Proprietário da tabela com o privilégio USAGE no esquema

Sintaxe

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 [, ...] )

Para reduzir o tempo de execução do comando ALTER TABLE, você pode combinar algumas cláusulas do comando ALTER TABLE.

O Amazon Redshift oferece suporte às seguintes combinações de cláusulas de 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);

Parâmetros

table_name

Nome da tabela a ser alterada. Especifique somente o nome da tabela ou use o formato schema_name.table_name para usar um esquema específico. As tabelas externas devem ser qualificadas por um nome de esquema externo. Você também poderá especificar um nome de exibição se estiver usando a instrução ALTER TABLE para renomear ou alterar o proprietário de uma exibição. O tamanho máximo de um nome de tabela é 127 bytes; nomes mais longos são truncados para ter no máximo 127 bytes. É possível usar caracteres multibyte UFT-8 até um máximo de quatro bytes. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.

ADD restrição_tabela

Cláusula que adiciona a restrição especificada à tabela. Para descrições de valores de table_constraint válidos, consulte CRIAR TABELA.

nota

Não é possível adicionar uma restrição de chave primária a uma coluna anulável. Se a coluna tiver sido criada originalmente com a restrição NOT NULL, é possível adicionar uma restrição de chave primária.

DROP CONSTRAINT nome_restrição

Cláusula que remove a restrição denominada da tabela. Para remover uma restrição, especifique o nome da restrição, não o tipo. Para visualizar nomes de restrições de tabelas, execute a consulta a seguir.

select constraint_name, constraint_type from information_schema.table_constraints;
RESTRICT

Cláusula que remove somente a restrição especificada. RESTRICT é uma opção para o comando DROP CONSTRAINT. RESTRICT não pode ser usada com CASCADE.

CASCADE

Cláusula que remove a restrição especificada e qualquer dependência dessa restrição. CASCADE é uma opção para o comando DROP CONSTRAINT. CASCADE não pode ser usada com RESTRICT.

OWNER TO novo_proprietário

Cláusula que altera o proprietário da tabela (ou exibição) para o valor new_owner.

RENAME TO novo_nome

Cláusula que renomeia uma tabela (ou exibição) para o valor especificado em new_name. O tamanho máximo do nome da tabela é 127 bytes; nomes mais longos são truncados para ter no máximo 127 bytes.

Não é possível renomear uma tabela permanente para um nome que comece com '#'. '#' no início do nome é indicação de uma tabela temporária.

Você não pode renomear uma tabela externa.

ALTER COLUMN column_name TYPE updated_varchar_data_type_size

Uma cláusula que altera o tamanho de uma coluna definida como um tipo de dados VARCHAR. Essa cláusula só oferece suporte à alteração do tamanho de um tipo de dado VARCHAR. Considere as seguintes limitações:

  • Não é possível alterar uma coluna com as codificações de compactação BYTEDICT, RUNLENGTH, TEXT255 ou TEXT32K.

  • Você não reduzir o tamanho para menos que o tamanho máximo dos dados existentes.

  • Não é possível alterar colunas com valores padrão

  • Não é possível alterar colunas com UNIQUE, PRIMARY KEY ou FOREIGN KEY.

  • Não é possível alterar colunas em um bloco de transação (BEGIN ... END). Para obter mais informações sobre transações, consulte Isolamento serializável.

ALTER COLUMN column_name ENCODE new_encode_type

Cláusula que altera a codificação de compactação de uma coluna. Se você especificar a codificação de compactação para uma coluna, a tabela não será mais definida como ENCODE AUTO. Para obter informações sobre a codificação de compactação, consulte Trabalhar com compactação de coluna.

Quando você altera a codificação de compactação para uma coluna, a tabela permanece disponível para consulta.

Considere as seguintes limitações:

  • Você não pode alterar uma coluna para a mesma codificação definida atualmente para a coluna.

  • Não é possível alterar a codificação de uma coluna em uma tabela com uma chave de classificação intercalada.

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

Uma cláusula que altera a codificação de compactação de várias colunas em um único comando. Para obter informações sobre a codificação de compactação, consulte Trabalhar com compactação de coluna.

Quando você altera a codificação de compactação para uma coluna, a tabela permanece disponível para consulta.

Considere as seguintes limitações:

  • Você não pode alterar uma coluna para o mesmo tipo de codificação ou uma diferente várias vezes em um único comando.

  • Você não pode alterar uma coluna para a mesma codificação definida atualmente para a coluna.

  • Não é possível alterar a codificação de uma coluna em uma tabela com uma chave de classificação intercalada.

ALTER DISTSTYLE ALL

Uma cláusula que altera o estilo de distribuição existente de uma tabela para ALL. Considere o seguinte:

  • ALTER DISTSTYLE, ALTER SORTKEY e VACUUM não podem ser executados simultaneamente na mesma tabela.

    • Se VACUUM estiver sendo executado no momento, a execução ALTER DISTSTYLE ALL retornará um erro.

    • Se ALTER DISTSTYLE ALL estiver em execução, a limpeza em segundo plano não será iniciada em uma tabela.

  • O comando ALTER DISTSTYLE ALL não é compatível com tabelas com chaves de classificação intercaladas e tabelas temporárias.

  • Se o estilo de distribuição foi definido anteriormente como AUTO, a tabela não é mais um candidato para otimização automática de tabela.

Para mais informações sobre DISTSTYLE ALL, consulte CRIAR TABELA.

ALTER DISTSTYLE EVEN

Uma cláusula que altera o estilo de distribuição existente de uma tabela para EVEN. Considere o seguinte:

  • Um ALTER DISTSYTLE, ALTER SORTKEY e VACUUM não podem ser executados simultaneamente na mesma tabela.

    • Se VACUUM estiver sendo executado no momento, a execução ALTER DISTSTYLE EVEN retornará um erro.

    • Se ALTER DISTSTYLE EVEN estiver em execução, o vacuum em segundo plano não será iniciado em uma tabela.

  • O comando ALTER DISTSTYLE EVEN não é compatível com tabelas com chaves de classificação intercaladas nem com tabelas temporárias.

  • Se o estilo de distribuição foi definido anteriormente como AUTO, a tabela não é mais um candidato para otimização automática de tabela.

Para obter mais informações sobre DISTSTYLE EVEN, consulte CRIAR TABELA.

ALTER DISTKEY column_name ou ALTER DISTSTYLE KEY DISTKEY column_name

Uma cláusula que altera a coluna usada como a chave de distribuição da tabela. Considere o seguinte:

  • VACUUM e ALTER DISTKEY não podem ser executados ao mesmo tempo na mesma tabela.

    • Se VACUUM já estiver sendo executado, então, ALTER DISTKEY retornará um erro.

    • Se ALTER DISTKEY estiver em execução, a limpeza em segundo plano não será iniciada na tabela.

    • Se ALTER DISTKEY estiver sendo executado, a limpeza em primeiro plano retornará um erro.

  • Você só pode executar um comando ALTER DISTKEY por vez em uma tabela.

  • O comando ALTER DISTKEY não é compatível com tabelas com chaves de classificação intercalada.

  • Se o estilo de distribuição foi definido anteriormente como AUTO, a tabela não é mais um candidato para otimização automática de tabela.

Ao especificar DISTSTYLE KEY, os dados são distribuídos pelos valores na coluna DISTKEY. Para mais informações sobre DISTSTYLE, consulte CRIAR TABELA.

ALTER DISTSTYLE AUTO

Uma cláusula que altera o estilo de distribuição existente de uma tabela para AUTO.

Quando você altera um estilo de distribuição para AUTO, o estilo de distribuição da tabela é definido para o seguinte:

  • Uma pequena tabela com DISTSTYLE ALL é convertida em AUTO(ALL).

  • Uma pequena tabela com DISTSTYLE EVEN é convertida em AUTO(ALL).

  • Uma pequena tabela com DISTSTYLE KEY é convertida em AUTO(ALL).

  • Uma grande tabela com DISTSTYLE ALL é convertida em AUTO(EVEN).

  • Uma grande tabela com DISTSTYLE EVEN é convertida em AUTO(EVEN).

  • Uma tabela grande com DISTSTYLE KEY é convertida em AUTO(KEY) e a DISTKEY é mantida. Nesse caso, o Amazon Redshift não faz alterações na tabela.

Se o Amazon Redshift determinar que um novo estilo de distribuição ou chave melhorará a performance das consultas, o Amazon Redshift poderá alterar o estilo de distribuição ou a chave da sua tabela no futuro. Por exemplo, o Amazon Redshift pode converter uma tabela com um DISTSTYLE de AUTO(KEY) em AUTO(EVEN), ou vice-versa. Para obter mais informações sobre o comportamento quando as chaves de distribuição são alteradas, incluindo redistribuição de dados e bloqueios, consulte Recomendações do Amazon Redshift Advisor.

Para mais informações sobre DISTSTYLE AUTO, consulte CRIAR TABELA.

Para exibir o estilo de distribuição de uma tabela, consulte a visualização do catálogo do sistema SVV_TABLE_INFO. Para obter mais informações, consulte SVV_TABLE_INFO. Para exibir as recomendações do Amazon Redshift Advisor para tabelas, consulte a visualização do catálogo do sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Para obter mais informações, consulte SVV_ALTER_TABLE_RECOMMENDATIONS. Para exibir as ações executadas pelo Amazon Redshift, consulte a visualização do catálogo do sistema SVL_AUTO_WORKER_ACTION. Para obter mais informações, consulte SVL_AUTO_WORKER_ACTION.

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

Uma cláusula que altera ou adiciona a chave de classificação usada para uma tabela. ALTER SORTKEY não é compatível com tabelas temporárias.

Quando você altera uma chave de classificação, a codificação de compactação de colunas na chave de classificação nova ou original pode ser alterada. Se nenhuma codificação for explicitamente definida para a tabela, o Amazon Redshift atribuirá automaticamente codificações de compactação da seguinte forma:

  • Colunas que são definidas como chaves de classificação são designadas a compactação RAW.

  • Colunas que são definidas como tipos de dados BOOLEAN, REAL ou DOUBLE PRECISION recebem a compactação RAW.

  • As colunas definidas como SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ recebem a compactação AZ64.

  • As colunas definidas como CHAR ou VARCHAR recebem a compactação LZO.

Considere o seguinte:

  • Você pode definir um máximo de 400 colunas para uma chave de classificação por tabela.

  • É possível alterar uma chave de classificação intercalada para uma chave de classificação composta ou nenhuma chave de classificação. Porém, não é possível alterar uma chave de classificação composta para uma chave de classificação intercalada.

  • Se a chave de classificação tiver sido definida anteriormente como AUTO, a tabela não será mais candidata à otimização automática da tabela.

  • O Amazon Redshift recomenda o uso de codificação RAW (sem compactação) para colunas definidas como chaves de classificação. Quando você altera uma coluna para escolhê-la como uma chave de classificação, a compactação da coluna é alterada para compactação RAW (sem compactação). Isso pode aumentar a quantidade de armazenamento necessária pela tabela. O quanto o tamanho da tabela aumenta depende da definição específica da tabela e do conteúdo da tabela. Para obter mais informações sobre compactação, consulte Codificações de compactação.

Quando os dados são carregados em uma tabela, os dados são carregados na ordem da chave de classificação. Quando você altera a chave de classificação, o Amazon Redshift reorganiza os dados. Para obter mais informações sobre SORTKEY, consulte CRIAR TABELA.

ALTER SORTKEY AUTO

Uma cláusula que altera ou adiciona a chave de classificação da tabela de destino como AUTO. ALTER SORTKEY AUTO não é compatível com tabelas temporárias.

Quando você altera uma chave de classificação para AUTO, o Amazon Redshift preserva a chave de classificação existente da tabela.

Se o Amazon Redshift determinar que uma nova chave de classificação melhorará a performance das consultas, o Amazon Redshift poderá alterar a chave de classificação ou a chave da sua tabela futuramente.

Para obter mais informações sobre SORTKEY AUTO, consulte CRIAR TABELA.

Para exibir a chave de classificação de uma tabela, consulte a visualização do catálogo do sistema SVV_TABLE_INFO. Para obter mais informações, consulte SVV_TABLE_INFO. Para exibir as recomendações do Amazon Redshift Advisor para tabelas, consulte a visualização do catálogo do sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Para obter mais informações, consulte SVV_ALTER_TABLE_RECOMMENDATIONS. Para exibir as ações executadas pelo Amazon Redshift, consulte a visualização do catálogo do sistema SVL_AUTO_WORKER_ACTION. Para obter mais informações, consulte SVL_AUTO_WORKER_ACTION.

ALTER SORTKEY NONE

Cláusula que remove a chave de classificação da tabela de destino.

Se a chave de classificação tiver sido definida anteriormente como AUTO, a tabela não será mais candidata à otimização automática da tabela.

ALTER ENCODE AUTO

Uma cláusula que altera o tipo de codificação das colunas da tabela de destino para AUTO. Quando você altera a codificação para AUTO, o Amazon Redshift preserva o tipo de codificação existente das colunas na tabela. Em seguida, se o Amazon Redshift determinar que um novo tipo de codificação pode melhorar a performance da consulta, o Amazon Redshift poderá alterar o tipo de codificação das colunas da tabela.

Se você alterar uma ou mais colunas para especificar uma codificação, o Amazon Redshift não ajustará mais automaticamente a codificação para todas as colunas da tabela. As colunas retêm as configurações de codificação atuais.

As seguintes ações não afetam a configuração ENCODE AUTO para a tabela:

  • Renomear a tabela.

  • Alterar a configuração DISTSTYLE ou SORTKEY para a tabela.

  • Adicionar ou eliminar uma coluna com uma configuração ENCODE.

  • Usar a opção COMPUPDATE do comando COPY. Para obter mais informações, consulte Operações de carregamento de dados.

Para exibir a codificação de uma tabela, consulte a visualização do catálogo do sistema SVV_TABLE_INFO. Para obter mais informações, consulte SVV_TABLE_INFO.

RENAME COLUMN column_name TO new_name

Cláusula que renomeia uma coluna para o valor especificado em new_name. O tamanho máximo do nome da coluna é 127 bytes; nomes mais longos são truncados para ter no máximo 127 bytes. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.

ADD [ COLUMN ] nome_coluna

Cláusula que adiciona uma coluna com o nome especificado à tabela. Só é possível adicionar uma coluna em cada instrução ALTER TABLE.

Não é possível adicionar uma coluna que é a chave de distribuição (DISTKEY) ou uma chave de classificação (SORTKEY) da tabela.

Não é possível usar o comando ALTER TABLE ADD COLUMN para modificar os atributos da tabela e da coluna a seguir:

  • UNIQUE

  • PRIMARY KEY

  • REFERENCES (chave externa)

  • IDENTITY ou GENERATED BY DEFAULT AS IDENTITY

O tamanho máximo do nome da coluna é 127 bytes; nomes mais longos são truncados para ter no máximo 127 bytes. O número máximo de colunas que você pode definir em uma única tabela é 1.600.

As seguintes restrições são aplicadas ao adicionar uma coluna a uma tabela externa:

  • Você não pode adicionar uma coluna a uma tabela externa com a restrições de coluna DEFAULT, ENCODE, NOT NULL ou NULL.

  • Você não pode adicionar colunas a uma tabela externa definida usando o formato de arquivo AVRO.

  • Se pseudocolunas estiverem habilitadas, o número máximo de colunas que poderá ser definido em uma única tabela externa será 1.598. Se pseudocolunas não estiverem habilitadas, o número máximo de colunas que poderá ser definido em uma única tabela será 1.600.

Para obter mais informações, consulte CREATE EXTERNAL TABLE.

column_type

O tipo de dados da coluna que está sendo adicionada. Para as colunas CHAR e VARCHAR, é possível usar a palavra-chave MAX em vez de declarar o tamanho máximo. MAX define o tamanho máximo de CHAR para 4.096 bytes ou de VARCHAR para 65.535 bytes. O tamanho máximo de um objeto GEOMETRY é 1.048.447 bytes.

Para obter mais informações sobre os tipos de dados que o Amazon Redshift aceita, consulte Tipos de dados.

DEFAULT default_expr

Cláusula que atribui um valor de dados padrão à coluna. O tipo de dados expr_padrão deve ser compatível com o tipo de dados da coluna. O valor DEFAULT deve ser uma expressão sem variáveis. Não são permitidas subconsultas, referências cruzadas de outras colunas na tabela atual e funções definidas pelo usuário.

default_expr é usado em qualquer operação INSERT que não especifique um valor para a coluna. Se não houver um valor padrão especificado, o valor padrão da coluna é nulo.

Se uma operação COPY encontrar um campo nulo em uma coluna com um valor DEFAULT e uma restrição NOT NULL, o comando COPY vai inserir o valor da default_expr.

DEFAULT não é compatível com tabelas externas.

ENCODE encoding

Codificação de compactação de uma coluna. Por padrão, o Amazon Redshift gerencia automaticamente a codificação de compactação para todas as colunas de uma tabela se você não especificar a codificação de compactação para qualquer coluna da tabela ou se especificar a opção ENCODE AUTO para a tabela.

Se você especificar a codificação de compactação para qualquer coluna na tabela ou se não especificar a opção ENCODE AUTO para a tabela, o Amazon Redshift atribuirá automaticamente a codificação de compactação às colunas para as quais você não especifica a codificação de compactação da seguinte maneira:

  • Todas as colunas nas tabelas temporárias são atribuídas à compactação RAW como padrão.

  • Colunas que são definidas como chaves de classificação são designadas a compactação RAW.

  • Colunas que são definidas como tipos de dados BOOLEAN, REAL, DOUBLE PRECISION, GEOMETRY ou GEOGRAPHY recebem a compactação RAW.

  • As colunas definidas como SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ recebem a compactação AZ64.

  • As colunas definidas como CHAR, VARCHAR ou VARBYTE recebem a compactação LZO.

nota

Se você não quiser que uma coluna seja compactada, especifique explicitamente codificação RAW.

Os seguintes compression encodings são compatíveis:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (sem compactação)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

ENCODE não é compatível com tabelas externas.

NOT NULL | NULL

NOT NULL especifica que a coluna não deve conter valores nulos. NULL, o padrão, especifica que a coluna aceita valores nulos.

NOT NULL e NULL não são compatíveis com tabelas externas.

COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }

Uma cláusula que especifica se a pesquisa ou comparação de string na coluna é CASE_SENSITIVE ou CASE_INSENSITIVE. O valor padrão é o mesmo da configuração atual de diferenciação de maiúsculas e minúsculas do banco de dados.

Para localizar as informações de agrupamento de banco de dados, use o seguinte comando:

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

Nome da coluna a ser excluída da tabela.

Você não pode descartar a última coluna de uma tabela. Uma tabela deve ter pelo menos uma coluna.

Não é possível descartar uma coluna que seja a chave de distribuição (DISTKEY) ou uma chave de classificação (SORTKEY) da tabela. Comportamento padrão de DROP COLUMN será RESTRICT se a coluna tiver qualquer objeto dependente, como uma exibição, uma chave primária, uma chave externa ou uma restrição UNIQUE.

As seguintes restrições são aplicadas ao remover uma coluna de uma tabela externa:

  • Você não poderá descartar uma coluna de uma tabela externa se a coluna for usada como uma partição.

  • Você não pode descartar uma coluna de uma tabela externa definida usando o formato de arquivo AVRO.

  • RESTRICT e CASCADE são ignorados para tabelas externas.

  • Não é possível descartar as colunas da tabela de políticas referenciada dentro da definição de política, a menos que você descarte ou desanexe a política. Isso também se aplica quando a opção CASCADE é especificada. Você pode descartar outras colunas na tabela de políticas.

Para obter mais informações, consulte CREATE EXTERNAL TABLE.

RESTRICT

Quando usado com DROP COLUMN, RESTRICT significa que a coluna a ser descartada não será descartada, nestes casos:

  • Se uma visualização definida fizer referência à coluna que está sendo descartada

  • Se uma chave externa fizer referência à coluna

  • Se a coluna fizer parte de uma chave multipart

RESTRICT não pode ser usada com CASCADE.

RESTRICT e CASCADE são ignorados para tabelas externas.

CASCADE

Quando usado com DROP COLUMN, remove a coluna especificada e qualquer objeto dependente dessa coluna. CASCADE não pode ser usada com RESTRICT.

RESTRICT e CASCADE são ignorados para tabelas externas.

As opções a seguir se aplicam somente a tabelas externas.

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

O caminho para a pasta ou bucket do Amazon S3 que contém arquivos de dados ou um arquivo manifesto que contém uma lista de caminhos de objetos do Amazon S3. Os buckets devem estar na mesma região da AWS que o cluster do Amazon Redshift. Para obter uma lista de regiões da AWS compatíveis, consulte Limitações do Amazon Redshift Spectrum. Para obter mais informações sobre o uso de um arquivo manifesto, consulte LOCATION na referência CREATE EXTERNAL TABLE Parâmetros.

SET FILE FORMAT format

Formato para arquivos de dados externos.

Os formatos válidos são:

  • AVRO

  • PARQUET

  • RCFILE

  • SEQUENCEFILE

  • TEXTFILE

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

Uma cláusula que estabelece a definição da tabela de propriedades da tabela para uma tabela externa.

nota

As propriedades de tabela fazem distinção entre maiúsculas e minúsculas.

'numRows'='row_count'

Uma propriedade que define o valor de numRows para a definição da tabela. Para atualizar de maneira explícita as estatísticas de uma tabela externa, defina a propriedade numRows de maneira a indicar o tamanho da tabela. O Amazon Redshift não analisa as tabelas externas para gerar as estatísticas das tabelas que o otimizador de consultas utiliza para gerar um plano de consulta. Se as estatísticas da tabela não estiverem configuradas para uma tabela externa, o Amazon Redshift gerará um plano de execução de consulta. Tal plano é baseado em uma suposição de que as tabelas externas são as maiores e as tabelas locais são as menores.

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

Uma propriedade que define o número de linhas a serem ignoradas no início de cada arquivo de origem.

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

Cláusula que define um novo local para uma ou mais colunas de partição.

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

Uma cláusula que adiciona uma ou mais partições. É possível especificar várias cláusulas PARTITION usando um único comando ALTER TABLE… ADD.

nota

Se usar o catálogo do AWS Glue, você poderá adicionar até 100 partições usando um único comando ALTER TABLE.

A cláusula IF NOT EXISTS indica que, se a partição especificada já existir, o comando não deverá fazer alterações. Também indica que o comando deverá retornar uma mensagem de que a partição existe, em vez de finalizar com um erro. Esta cláusula é útil para realizar scripting para que o script não falhe se o comando ALTER TABLE tentar adicionar uma partição que já existe.

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

Cláusula que remove a partição especificada. Remover uma partição altera somente os metadados da tabela externa. Os dados no Amazon S3 não são afetados.

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

Uma cláusula que ativa ou desativa a segurança no nível da linha para uma relação.

Quando a segurança no nível da linha é ativada para uma relação, você só pode ler as linhas às quais a política de segurança no nível da linha permite acesso. Quando não há política que conceda acesso à relação, você não consegue ver nenhuma linha da tabela. Somente superusuários e usuários ou perfis que tenham o perfil sys:secadmin podem definir a cláusula ROW LEVEL SECURITY. Para ter mais informações, consulte Segurança por linha.

  • [ CONJUNCTION TYPE { AND | OR } ]

    Uma cláusula que permite a você escolher o tipo de conjunção da política de segurança no nível da linha para uma relação. Quando várias políticas de segurança no nível da linha são anexadas a uma relação, você pode combinar as políticas com a cláusula AND ou OR. Por padrão, o Amazon Redshift combina políticas RLS com a cláusula AND. Superusuários, usuários ou funções que tenham a função sys:secadmin podem usar essa cláusula para definir o tipo de conjunção da política de segurança no nível da linha para uma relação. Para ter mais informações, consulte Combinar várias políticas por usuário.

  • PARA UNIDADES DE COMPARTILHAMENTO DE DADOS

    Uma cláusula que determina se uma relação protegida por RLS pode ser acessada por meio das unidades de compartilhamento de dados. Por padrão, uma relação protegida por RLS não pode ser acessada por meio de uma unidade de compartilhamento de dados. Um comando ALTER TABLE ROW LEVEL SECURITY executado com essa cláusula só afeta a propriedade de acessibilidade da unidade de compartilhamento de dados da relação. A propriedade ROW LEVEL SECURITY não foi alterada.

    Se você tornar uma relação protegida por RLS acessível por meio de unidades de compartilhamentos de dados, a relação não terá segurança no nível da linha no banco de dados compartilhado no lado do consumidor. A relação mantém a propriedade RLS do lado do produtor.

Exemplos

Para exemplos que mostram como usar o comando ALTER TABLE, confira os tópicos a seguir.