CREATE EXTERNAL TABLE - Amazon Redshift

CREATE EXTERNAL TABLE

Cria uma nova tabela externa no esquema especificado. Todas as tabelas externas devem ser criadas em um esquema externo. O caminho de pesquisa não é compatível com esquemas e tabelas externos. Para ter mais informações, consulte CREATE EXTERNAL SCHEMA.

Além das tabelas externas criadas usando o comando de CREATE EXTERNAL TABLE, o Amazon Redshift pode fazer referência a tabelas externas definidas em um catálogo do AWS Glue ou do AWS Lake Formation ou em uma metastore do Apache Hive. Use o comando CREATE EXTERNAL SCHEMA para registrar um banco de dados externo definido no catálogo externo e disponibilize as tabelas externas para uso no Amazon Redshift. Se a tabela externa existir em um catálogo do AWS Glue ou do AWS Lake Formation ou na metastore do Hive, você não precisará criar uma tabela usando CREATE EXTERNAL TABLE. Para visualizar as tabelas externas, consulte a exibição do sistema SVV_EXTERNAL_TABLES.

Ao executar o comando CREATE EXTERNAL TABLE AS, você cria uma tabela externa com base na definição da coluna de uma consulta e grava os resultados dessa consulta no Amazon S3. Os resultados estão no Apache Parquet ou no formato de texto delimitado. Se a tabela externa tiver uma chave ou chaves de partições, o Amazon Redshift particionará novos arquivos de acordo com essas chaves de partição e registrará novas partições no catálogo externo automaticamente. Para obter mais informações sobre CREATE EXTERNAL TABLE AS, consulte Observações de uso.

Você pode consultar uma tabela externa usando a mesma sintaxe de SELECT que usa com outras tabelas do Amazon Redshift. Também é possível usar a sintaxe INSERT para gravar novos arquivos no local da tabela externa no Amazon S3. Para obter mais informações, consulte INSERT (tabela externa).

Para criar uma exibição com uma tabela externa, inclua a cláusula WITH NO SCHEMA BINDING na instrução CREATE VIEW.

Não é possível executar CREATE EXTERNAL TABLE em uma transação (BEGIN … END). Para obter mais informações sobre transações, consulte Isolamento serializável.

Privilégios obrigatórios

Para criar tabelas externas, você deve ser proprietário do esquema externo ou um superusuário. Para transferir a propriedade de um esquema externo, use ALTER SCHEMA para alterar o proprietário. O acesso a tabelas externas é controlado pelo acesso ao esquema externo. Não é possível usar o comando GRANT ou REVOKE para permissões em uma tabela externa. Em vez disso, conceda ou revogue USAGE no esquema externo.

As Observações de uso têm informações adicionais sobre permissões específicas para tabelas externas.

Sintaxe

CREATE EXTERNAL TABLE
external_schema.table_name
(column_name data_type [, …] )
[ PARTITIONED BY (col_name data_type [, … ] )]
[ { ROW FORMAT DELIMITED row_format |
  ROW FORMAT SERDE 'serde_name'
  [ WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ] } ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]

Veja a seguir a sintaxe de CREATE EXTERNAL TABLE AS.

CREATE EXTERNAL TABLE
external_schema.table_name
[ PARTITIONED BY (col_name [, … ] ) ]
[ ROW FORMAT DELIMITED row_format ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]
 AS
 { select_statement }
         

Parâmetros

external_schema.table_name

Nome da tabela a ser criada, qualificada por um nome de esquema externo. As tabelas externas devem ser criadas em um esquema externo. Para obter mais informações, consulte CREATE EXTERNAL SCHEMA.

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. O Amazon Redshift aplica um limite de 9.900 tabelas por cluster, incluindo tabelas temporárias definidas pelo usuário e tabelas temporárias criadas pelo Amazon Redshift durante o processamento de consultas ou a manutenção do sistema. Como opção, é possível qualificar o nome da tabela com o nome do banco de dados. No exemplo a seguir, o nome do banco de dados é spectrum_db, o nome do esquema externo é spectrum_schema e o nome da tabela é test.

create external table spectrum_db.spectrum_schema.test (c1 int) stored as parquet location 's3://amzn-s3-demo-bucket/myfolder/';

Se o banco de dados ou esquema especificado não existir, a tabela não será criada e a instrução retornará um erro. Você não pode criar tabelas ou exibições nos bancos de dados do sistema template0, template1, padb_harvest ou sys:internal.

O nome da tabela deve ser exclusivo para o esquema especificado.

Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.

( nome_coluna tipo_dados )

O nome e o tipo de dados de cada coluna que está sendo criada.

O tamanho máximo de um nome de coluna é 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. Você não pode especificar nomes de coluna "$path" ou "$size". Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.

Por padrão, o Amazon Redshift cria tabelas externas com as pseudocolunas $path e $size. Você pode desabilitar a criação de pseudocolunas em uma sessão. Basta definir o parâmetro de configuração spectrum_enable_pseudo_columns como false. Para obter mais informações, consulte Pseudocolunas .

Se as pseudocolunas forem habilitadas, o número máximo de colunas que você poderá definir em uma única tabela 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.

Se você estiver criando uma "tabela larga", assegure que sua lista de colunas não exceda os limites de largura de linha para resultados intermediários durante cargas e processamento de consultas. Para obter mais informações, consulte Observações de uso.

Para um comando CREATE EXTERNAL TABLE AS, não é necessária uma lista de colunas, pois elas são derivadas da consulta.

data_type

Os seguintes Tipos de dados são compatíveis:

  • SMALLINT (INT2)

  • INTEGER (INT, INT4)

  • BIGINT (INT8)

  • DECIMAL (NUMERIC)

  • REAL (FLOAT4)

  • DOUBLE PRECISION (FLOAT8)

  • BOOLEAN (BOOL)

  • CHAR (CHARACTER)

  • VARCHAR (CHARACTER VARYING)

  • VARBYTE (CHARACTER VARYING): pode ser usado com arquivos de dados Parquet e ORC, e somente com tabelas não particionadas.

  • DATE: pode ser usado somente com arquivos de dados de texto, Parquet ou ORC, ou como uma coluna de partição.

  • TIMESTAMP

Em DATE, você pode usar os formatos conforme descrito a seguir. Para valores mensais representados usando dígitos, estes formatos são compatíveis:

  • mm-dd-yyyy Por exemplo, 05-01-2017. Esse é o padrão.

  • yyyy-mm-dd, onde o ano é representado por mais de 2 dígitos. Por exemplo, 2017-05-01.

Para valores mensais representados usando abreviações de três letras, estes formatos são compatíveis:

  • mmm-dd-yyyy Por exemplo, may-01-2017. Esse é o padrão.

  • dd-mmm-yyyy, onde o ano é representado por mais de 2 dígitos. Por exemplo, 01-may-2017.

  • yyyy-mmm-dd, onde o ano é representado por mais de 2 dígitos. Por exemplo, 2017-may-01.

Para valores de ano consistentemente inferiores a 100, o ano é calculado desta maneira:

  • Se o ano for inferior a 70, o ano será calculado como o ano mais 2000. Por exemplo, a data 05-01-17 no formato mm-dd-yyyy é convertida para 05-01-2017.

  • Se o ano for inferior a 100 e maior que 69, o ano será calculado como o ano mais 1900. Por exemplo, a data 05-01-89 no formato mm-dd-yyyy é convertida para 05-01-1989.

  • Para valores de ano representados por dois dígitos, adicione zeros à esquerda para representar o ano em 4 dígitos.

Os valores de data e hora nos arquivos de texto devem estar no formato yyyy-mm-dd HH:mm:ss.SSSSSS, como mostra o seguinte valor de data e hora de exemplo: 2017-05-01 11:30:59.000000.

O comprimento de uma coluna VARCHAR é definido em bytes, não em caracteres. Por exemplo, uma coluna VARCHAR(12) pode conter 12 caracteres de único byte ou 6 caracteres de dois bytes. Quando você consulta uma tabela externa, os resultados são truncados para se adequar ao tamanho da coluna definido sem retornar um erro. Para obter mais informações, consulte Armazenamento e intervalos.

Para obter uma melhor performance, recomendamos especificar o menor tamanho de coluna que se ajusta aos seus dados. Para encontrar o tamanho máximo em bytes dos valores em uma coluna, use a função OCTET_LENGTH. O exemplo a seguir retorna o tamanho máximo de valores na coluna de email.

select max(octet_length(email)) from users; max --- 62
PARTITIONED BY (nome_col tipo_dados [, … ] )

Cláusula que define uma tabela particionada com uma ou mais colunas de partição. Um diretório de dados separado é usado para cada combinação específica, o que pode melhorar a performance da consulta em algumas condições. As colunas particionadas não existem na própria tabela de dados. Se você usar um valor para col_name que é o mesmo valor usado na coluna da tabela, obterá um erro.

Depois de criar uma tabela particionada, altere-a usando uma instrução ALTER TABLE … ADD PARTITION para registrar novas partições no catálogo externo. Ao adicionar uma partição, você define a localização da subpasta no Amazon S3 que contém dados da partição.

Por exemplo, se a tabela spectrum.lineitem_part for definida com PARTITIONED BY (l_shipdate date), execute o comando ALTER TABLE a seguir para adicionar uma partição.

ALTER TABLE spectrum.lineitem_part ADD PARTITION (l_shipdate='1992-01-29') LOCATION 's3://spectrum-public/lineitem_partition/l_shipdate=1992-01-29';

Se você estiver usando CREATE EXTERNAL TABLE AS, não será necessário executar ALTER TABLE…ADD PARTITION. O Amazon Redshift registra novas partições no catálogo externo. O Amazon Redshift também grava automaticamente os dados correspondentes nas partições no Amazon S3 com base na chave ou nas chaves de partição definidas na tabela.

Para visualizar partições, consulte a exibição do sistema SVV_EXTERNAL_PARTITIONS.

nota

Para um comando CREATE EXTERNAL TABLE AS, não é necessário especificar o tipo de dados da coluna de partição, pois essa coluna é derivada da consulta.

ROW FORMAT DELIMITED formatodelinha

Cláusula que especifica o formato de dados subjacentes. Os valores possíveis para rowformat são os seguintes:

  • LINES TERMINATED BY 'delimiter'

  • FIELDS TERMINATED BY 'delimiter'

Especifique um único caractere ASCII para 'delimiter'. Você pode especificar caracteres ASCII não imprimíveis usando o sistema octal no formato '\ddd', em que d é um dígito octal (0 - 7) até ‘\177’. O exemplo a seguir especifica o caractere BEL (sino) usando o sistema octal.

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\007'

Se ROW FORMAT for omitido, o formato padrão será DELIMITED FIELDS TERMINATED BY '\A' (início do cabeçalho) e LINES TERMINATED BY '\n' (nova linha).

ROW FORMAT SERDE 'serde_name'
[WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ]

Uma cláusula que especifica o formato SERDE para os dados subjacentes.

'serde_name'

O nome de SerDe. Você pode especificar os seguintes formatos:

  • org.apache.hadoop.hive.serde2.RegexSerDe

  • com.amazonaws.glue.serde.GrokSerDe

  • org.apache.hadoop.hive.serde2.OpenCSVSerde

    Esse parâmetro é compatível com a seguinte propriedade SerDe para OpenCSVSerde:

    'wholeFile' = 'true'

    Defina a propriedade wholeFile para true a fim de analisar corretamente novos caracteres de linha (\n) dentro de strings entre aspas para solicitações de OpenCSV.

  • org.openx.data.jsonserde.JsonSerDe

    • O JSON SERDE também dá suporte aos arquivos Ion.

    • O JSON bastante deve ser bem formado.

    • Os timestamps em Ion e JSON precisam ter formato ISO8601.

    • Esse parâmetro é compatível com a seguinte propriedade SerDe para JsonSerDe:

      'strip.outer.array'='true'

      Processa arquivos Ion/JSON contendo uma matriz muito grande entre colchetes externos ( [ … ] ) como se contivesse vários registros JSON dentro da matriz.

  • com.amazon.ionhiveserde.IonHiveSerDe

    O formato Amazon ION fornece formatos de texto e binário, além dos tipos de dados. Para uma tabela externa que faz referência a dados no formato ION, mapeie cada coluna na tabela externa para o elemento correspondente nos dados do formato ION. Para obter mais informações, consulte Amazon Ion. Também é necessário especificar os formatos de entrada e saída.

WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ]

Opcionalmente, especifique nomes e valores de propriedade, separados por vírgulas.

Se ROW FORMAT for omitido, o formato padrão será DELIMITED FIELDS TERMINATED BY '\A' (início do cabeçalho) e LINES TERMINATED BY '\n' (nova linha).

STORED AS formato do arquivo

Formato para arquivos de dados.

Os formatos válidos são:

  • PARQUET

  • RCFILE (somente para dados que usem ColumnarSerDe, não LazyBinaryColumnarSerDe)

  • SEQUENCEFILE

  • TEXTFILE (para arquivos de texto, inclusive arquivos JSON).

  • ORC

  • AVRO

  • INPUTFORMAT 'input_format_classname' OUTPUTFORMAT 'output_format_classname'

O comando CREATE EXTERNAL TABLE AS oferece suporte somente a dois formatos de arquivo, TEXTFILE e PARQUET.

Para INPUTFORMAT e OUTPUTFORMAT, especifique um nome de classe, conforme exibido no exemplo a seguir:

'org.apache.hadoop.mapred.TextInputFormat'
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.

Se o caminho especificar uma pasta ou bucket, por exemplo 's3://amzn-s3-demo-bucket/custdata/', o Redshift Spectrum fará a varredura dos arquivos na pasta ou bucket especificado e em todas as subpastas. O Redshift Spectrum ignora os arquivos ocultos e os arquivos que começam com um ponto ou um sublinhado.

Se o caminho especificar um arquivo manifesto, o argumento 's3://bucket/manifest_file' deverá fazer referência explícita a um único arquivo, por exemplo, 's3://amzn-s3-demo-bucket/manifest.txt'. Ele não pode fazer referência a um prefixo de chaves.

O manifesto é um arquivo de texto em formato JSON que lista o URL de cada arquivo a ser carregado a partir do Amazon S3 e o tamanho do arquivo em bytes. O URL inclui o nome do bucket e o caminho de objeto completo do arquivo. Os arquivos especificados no manifesto podem estar em buckets diferentes, mas todos os buckets devem estar na mesma região da AWS que o cluster do Amazon Redshift. Se for listado duas vezes, o arquivo será carregado duas vezes. O exemplo a seguir mostra o JSON de um manifesto que carrega três arquivos.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1", "meta": { "content_length": 5956875 } }, {"url":"s3://amzn-s3-demo-bucket1/custdata.2", "meta": { "content_length": 5997091 } }, {"url":"s3://amzn-s3-demo-bucket2/custdata.1", "meta": { "content_length": 5978675 } } ] }

Você pode tornar a inclusão de um arquivo específico obrigatória. Para fazer isso, inclua uma opção mandatory em nível de arquivo no manifesto. Ao consultar uma tabela externa com um ficheiro obrigatório faltando, a instrução SELECT falha. Certifique-se de que todos os arquivos incluídos na definição da tabela externa estejam presentes. Se nem todos estiverem presentes, um erro será exibido mostrando o primeiro arquivo obrigatório que não foi encontrado. O exemplo a seguir mostra o JSON para um manifesto com a opção mandatory definida como true.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1", "mandatory":true, "meta": { "content_length": 5956875 } }, {"url":"s3://amzn-s3-demo-bucket1/custdata.2", "mandatory":false, "meta": { "content_length": 5997091 } }, {"url":"s3://amzn-s3-demo-bucket2/custdata.1", "meta": { "content_length": 5978675 } } ] }

Para fazer referência a arquivos criados usando UNLOAD, use o manifesto criado usando UNLOAD com o parâmetro MANIFEST. O arquivo manifesto é compatível com um arquivo manifesto para COPY do Amazon S3, mas utiliza chaves diferentes. Chaves que não são usadas são ignoradas.

TABLE PROPERTIES ( 'property_name'='property_value' [, ...] )

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

nota

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

'compression_type'='valor'

Uma propriedade que define o tipo de compactação a ser usado se o nome de arquivo não contiver uma extensão. Se você definir essa propriedade e houver uma extensão de arquivo, a extensão será ignorada e o valor definido pela propriedade será usado. Os valores válidos para o tipo de compactação são os seguintes:

  • bzip2

  • gzip

  • nenhuma

  • snappy

'data_cleansing_enabled'='true / false’

Essa propriedade define se o tratamento de dados está ativado para a tabela. Quando 'data_cleansing_enabled' está definido como true, o tratamento de dados está ativado para a tabela. Quando 'data_cleansing_enabled' está definido como false, o tratamento de dados está desativado para a tabela. A seguir, há uma lista das propriedades de tratamento de dados em nível de tabela controladas por essa propriedade:

  • column_count_mismatch_handling

  • invalid_char_handling

  • numeric_overflow_handling

  • replacement_char

  • surplus_char_handling

Para ver exemplos, consulte Exemplos de tratamento de dados.

'invalid_char_handling'='valor'

Especifica a ação a ser realizada quando os resultados da consulta contêm valores de caracteres UTF-8 inválidos. Você pode especificar as seguintes ações:

DESATIVADA

Não trata os caracteres inválidos.

FAIL

Cancela as consultas que retornam dados contendo valores UTF-8 inválidos.

SET_TO_NULL

Substitui os valores UTF-8 inválidos por null.

DROP_ROW

Substitui todos os valores da linha por null.

REPLACE

Substitui o caractere inválido pelo caractere de substituição especificado usando replacement_char.

'replacement_char'='caractere

Especifica o caractere de substituição a ser usado quando você define invalid_char_handling como REPLACE.

'numeric_overflow_handling'='valor’

Especifica a ação a ser realizada quando os dados ORC contêm um inteiro (por exemplo, BIGINT ou int64) que é maior que a definição da coluna (por exemplo, SMALLINT ou int16). Você pode especificar as seguintes ações:

DESATIVADA

O tratamento de caracteres inválidos é desativado.

FAIL

Cancelar a consulta quando os dados incluírem caracteres inválidos.

SET_TO_NULL

Definir os caracteres inválidos como null.

DROP_ROW

Definir todos os valores da linha como null.

'surplus_bytes_handling'='value'

Especifica como lidar com os dados sendo carregados que excederem o comprimento do tipo de dado definido para colunas contendo dados VARBYTE. Por padrão, o Redshift Spectrum define o valor como null para dados que excedem a largura da coluna.

Você pode especificar as seguintes ações a serem realizadas quando a consulta retorna dados que excedem o comprimento do tipo de dado:

SET_TO_NULL

Substitui os dados que excedem a largura da coluna por null.

DESATIVADA

Não lida com excesso de bytes.

FAIL

Cancela as consultas que retornam dados que excedem a largura da coluna.

DROP_ROW

Elimine todas as linhas que contêm dados que excedam a largura da coluna.

TRUNCATE

Remove os caracteres que excedem o número máximo de caracteres definido para a coluna.

'surplus_char_handling'='valor'

Especifica como lidar com os dados sendo carregados que excederem o comprimento do tipo de dados definido para colunas contendo VARCHAR, CHAR ou dados em string. Por padrão, o Redshift Spectrum define o valor como null para dados que excedem a largura da coluna.

Você pode especificar as seguintes ações a serem realizadas quando a consulta retorna dados que excedem a largura da coluna:

SET_TO_NULL

Substitui os dados que excedem a largura da coluna por null.

DESATIVADA

Não trata de caracteres em excesso.

FAIL

Cancela as consultas que retornam dados que excedem a largura da coluna.

DROP_ROW

Substitui todos os valores da linha por null.

TRUNCATE

Remove os caracteres que excedem o número máximo de caracteres definido para a coluna.

'column_count_mismatch_handling'='value’

Identifica se o arquivo contém um número menor ou maior de valores para uma linha do que o de colunas especificado na definição da tabela externa. Essa propriedade só está disponível para um formato de arquivo de texto não compactado. Você pode especificar as seguintes ações:

DESATIVADA

O tratamento de incompatibilidade de contagem de colunas está desativado.

FAIL

Há falha na consulta se for detectada incompatibilidade na contagem de colunas.

SET_TO_NULL

Preencha os valores ausentes com NULL e ignore os valores adicionais em cada linha.

DROP_ROW

Elimine todas as linhas que contêm erro de incompatibilidade de contagem de colunas na verificação.

'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 de tabelas não estiverem definidas para uma tabela externa, o Amazon Redshift gera um plano de execução de consulta com base na suposição de que as tabelas externas são maiores e as tabelas locais são 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.

'serialization.null.format'=' '

Uma propriedade que especifica o Spectrum deve retornar um valor NULL quando houver uma correspondência exata com o texto fornecido em um campo.

'orc.schema.resolution'='mapping_type'

Uma propriedade que define o tipo de mapeamento de coluna para tabelas que usam o formato de dados ORC. Essa propriedade é ignorada para outros formatos de dados.

Os valores válidos para o tipo de mapeamento de coluna são os seguintes:

  • name

  • position

Se a propriedade orc.schema.resolution for omitida, as colunas serão mapeadas por nome por padrão. Se orc.schema.resolution estiver definido como qualquer valor diferente de 'name' ou 'position', as colunas serão mapeadas por posição. Para obter mais informações sobre o mapeamento de colunas, consulte Mapeamento de colunas de tabela externa para colunas do ORC.

nota

O comando COPY mapeia para arquivos de dados ORC apenas por posição. A propriedade de tabela orc.schema.resolution não tem efeito sobre o comportamento do comando COPY.

'write.parallel'='on / off’

Uma propriedade que define se CREATE EXTERNAL TABLE AS deve gravar dados em paralelo. Por padrão, CREATE EXTERNAL TABLE AS grava dados em paralelo em vários arquivos, de acordo com o número de fatias no cluster. A opção padrão é ativado. Quando 'write.parallel' está definido como desativado, CREATE EXTERNAL TABLE AS grava em um ou mais arquivos de dados serialmente no Amazon S3. Essa propriedade de tabela também se aplica a qualquer instrução INSERT subsequente na mesma tabela externa.

‘write.maxfilesize.mb’=‘size’

Uma propriedade que define o tamanho máximo (em MB) de cada arquivo gravado no Amazon S3 por CREATE EXTERNAL TABLE AS. O tamanho deve ser um número inteiro entre 5 e 6.200. O tamanho máximo padrão do arquivo é 6.200 MB. Essa propriedade de tabela também se aplica a qualquer instrução INSERT subsequente na mesma tabela externa.

‘write.kms.key.id’=‘value

É possível especificar uma chave AWS Key Management Service para habilitar a criptografia do lado do servidor (SSE) para objetos do Amazon S3, onde value é uma das seguintes ações:

  • auto para usar o chave padrão do AWS KMS armazenada no bucket do Amazon S3.

  • kms-keyque você especifica para criptografar dados.

select_statement

Uma instrução que insere uma ou mais linhas na tabela externa ao definir qualquer consulta. Todas as linhas que a consulta gera são gravadas no Amazon S3 no formato de texto ou Parquet com base na definição da tabela.

Uma coleção de exemplos está disponível em Exemplos.