Carregar dados de largura fixa do Amazon S3 - Amazon Redshift

Carregar dados de largura fixa do Amazon S3

Arquivos de dados de largura fixa têm comprimentos uniformes para cada coluna de dados. Cada campo em um arquivo de dados de largura fixa tem exatamente o mesmo comprimento e posição. Para dados de caracteres (CHAR e VARCHAR) em um arquivo de dados de largura fixa, você deve incluir espaços em branco iniciais ou finais como espaços reservados para manter a largura uniforme. Para números inteiros, você deve usar zeros iniciais como espaços reservados. Um arquivo de dados de largura fixa não tem qualquer delimitador para separar colunas.

Para carregar um arquivo de dados de largura fixa em uma tabela existente, USE o parâmetro FIXEDWIDTH no comando COPY. As especificações de sua tabela devem corresponder ao valor de fixedwidth_spec para que os dados sejam carregados corretamente.

Para carregar dados de largura fixa de um arquivo para uma tabela, emita o seguinte comando:

copy table_name from 's3://mybucket/prefix' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'fixedwidth_spec';

O parâmetro fixedwidth_spec é uma string que contém um identificador para cada coluna e a largura de cada coluna, separados por um sinal de dois pontos. Os pares de column:width são delimitados por vírgulas. O identificador pode ser o que você escolher: números, letras ou uma combinação dos dois. O identificador não tem qualquer relação com a própria tabela, portanto a especificação deve conter as colunas na mesma ordem que a tabela.

Os dois exemplos a seguir mostram a mesma especificação, a primeira usando identificadores numéricos e a segunda usando identificadores de string:

'0:3,1:25,2:12,3:2,4:6'
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'

O seguinte exemplo exibe dados de amostra de largura fixa que poderiam ser carregados na tabela VENUE usando as especificações precedentes:

1 Toyota Park Bridgeview IL0 2 Columbus Crew Stadium Columbus OH0 3 RFK Stadium Washington DC0 4 CommunityAmerica Ballpark Kansas City KS0 5 Gillette Stadium Foxborough MA68756

O seguinte comando COPY carrega este conjunto de dados na tabela VENUE:

copy venue from 's3://mybucket/data/venue_fw.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';