Uso de um manifesto para especificar arquivos de dados
Você pode usar um manifesto para garantir que o comando COPY carregue todos os arquivos necessários, e somente os arquivos necessários, para um carregamento de dados. Você pode usar um manifesto para carregar vários arquivos de buckets diferentes ou arquivos que não compartilham o mesmo prefixo. Em vez de fornecer um caminho de objeto para o comando COPY, você fornece o nome de um arquivo de texto em formato JSON que lista explicitamente os arquivos a serem carregados. O URL no manifesto deve especificar o nome de bucket e o caminho de objeto completo para o arquivo, e não apenas um prefixo.
Para obter mais informações sobre arquivos manifesto, consulte o exemplo de COPY Usar um manifesto para especificar arquivos de dados.
O seguinte exemplo mostra o JSON para carregar arquivos de diferentes buckets e com nomes de arquivos que começam com carimbos de data.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true} ] }
O sinalizador opcional mandatory
especifica se COPY deve retornar um erro se o arquivo não for localizado. O padrão de mandatory
é false
. Independentemente de qualquer configuração obrigatória, COPY será encerrado se nenhum arquivo for encontrado.
O exemplo a seguir executa o comando COPY com o manifesto do exemplo anterior, chamado cust.manifest
.
COPY customer FROM 's3://amzn-s3-demo-bucket/cust.manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' MANIFEST;
Uso de um manifesto criado por UNLOAD
Um manifesto criado por uma operação UNLOAD usando o parâmetro MANIFEST pode ter chaves que não são necessárias para a operação COPY. Por exemplo, o manifesto UNLOAD
a seguir inclui uma chave meta
que é necessária para uma tabela externa do Amazon Redshift Spectrum e para o carregamento de arquivos de dados em um formato de arquivo ORC
ou Parquet
. A chave meta
contém uma chave content_length
com um valor que é o tamanho real do arquivo em bytes. A operação COPY requer somente a chave url
uma chave mandatory
opcional.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }}, {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }} ] }
Para obter mais informações sobre arquivos manifesto, consulte Example: COPY from Amazon S3 using a manifest.