Parâmetros de formato de dados
Por padrão, o comando COPY espera que os dados de origem sejam texto UTF-8 delimitados por caractere. O delimitador padrão é um caractere de barra ( | ). Se os dados de origem estiverem em outro formato, use os parâmetros a seguir para especificar o formato de dados:
Além dos formatos de dados padrão, COPY é compatível com os seguintes formatos de dados colunares para COPY do Amazon S3:
COPY de formato colunar é compatível com determinada restrição. Para obter mais informações, consulte COPY de formatos de dados colunar.
Parâmetros de formato de dados
- FORMAT [AS]
-
(Opcional) Identifica palavras-chave do formato de dados. Os argumentos FORMAT estão descritos a seguir.
- CSV [ QUOTE [AS] 'quote_character' ]
-
Permite o uso do formato CSV nos dados de entrada. Para delimitadores de escape automático, caracteres em nova linha e retornos de carro, deixe o campo no caractere especificado no parâmetro QUOTE. As aspas padrão são aspas duplas ("). Quando as aspas são usadas dentro de um campo, faça o escape do caractere com aspas adicionais. Por exemplo, se as aspas forem duplas, para inserir a string
A "quoted" word
o arquivo de entrada deve incluir a string"A ""quoted"" word"
. Quando o parâmetro CSV for usado, o delimitador padrão será uma vírgula ( , ). Você pode especificar um delimitador diferente usando o parâmetro DELIMITER.Quando um campo está entre aspas, o espaço em branco entre os delimitadores e as aspas é ignorado. Se o delimitador for um caractere de espaço em branco, como uma tabulação, o delimitador não será tratado como um espaço em branco.
CSV não pode ser usado com FIXEDWIDTH, REMOVEQUOTES ou ESCAPE.
- QUOTE [AS] 'quote_character'
-
Opcional. Especifica o caractere a ser usado como as aspas durante o uso do parâmetro CSV. O padrão são aspas duplas ( " ). Se usar o parâmetro QUOTE para definir aspas diferentes das aspas duplas, você não precisará escapar aspas duplas dentro do campo. O parâmetro QUOTE só pode ser usado com o parâmetro CSV. A palavra-chave AS é opcional.
- DELIMITER [AS] ['delimiter_char']
-
Especifica os caracteres que são usados para separar campos no arquivo de entrada, como barra (
|
), vírgula (,
) ou tabulação (\t
), ou vários caracteres, como|~|
. Caracteres não imprimíveis são aceitos. Os caracteres também podem ser representados em octal como suas unidades de código UTF-8. Para octal, use o formato “\ddd”, em que “d” é um dígito octal (0 a 7). O delimitador padrão é um caractere de barra (|
), a menos que o parâmetro CSV seja usado, caso em que o delimitador padrão é uma vírgula (,
). A palavra-chave AS é opcional. DELIMITER não pode ser usado com FIXEDWIDTH. - FIXEDWIDTH 'fixedwidth_spec'
-
Carrega os dados de um arquivo em que a largura de cada coluna tem um tamanho fixo, em vez de colunas separadas por um delimitador. A fixedwidth_spec é uma string que especifica um rótulo de coluna definido pelo usuário e uma largura de coluna. O rótulo da coluna pode ser uma string de texto ou um inteiro, dependendo do que o usuário escolher. O rótulo da coluna não tem relação com o nome da coluna. A ordem dos pares de rótulo/largura deve corresponder exatamente à ordem das colunas da tabela. FIXEDWIDTH não pode ser usado com CSV ou DELIMITER. No Amazon Redshift, como o tamanho das colunas CHAR e VARCHAR é expressado em bytes, verifique se a largura de coluna especificada por você acomoda o tamanho binário de caracteres multibyte ao preparar o arquivo a ser carregado. Para obter mais informações, consulte Tipos de caracteres.
O formato de fixedwidth_spec é mostrado a seguir:
'colLabel1:colWidth1,colLabel:colWidth2, ...'
- SHAPEFILE [ SIMPLIFY [AUTO] ['tolerance'] ]
-
Permite o uso do formato SHAPEFILE nos dados de entrada. Por padrão, a primeira coluna do shapefile é uma coluna
GEOMETRY
ouIDENTITY
. Todas as colunas subsequentes seguem a ordem especificada no shapefile.É possível usar SHAPEFILE com FIXEDWIDTH, REMOVEQUOTES ou ESCAPE.
Para usar objetos
GEOGRAPHY
comCOPY FROM SHAPEFILE
, primeiro ingira em um colunaGEOMETRY
e transmita os objetos para objetosGEOGRAPHY
. .- SIMPLIFY [tolerance]
-
(Opcional) Simplifica todas as geometrias durante o processo de ingestão usando o algoritmo Ramer-Douglas-Peucker e a tolerância dada.
- SIMPLIFY AUTO [tolerance]
-
(Opcional) Simplifica apenas geometrias maiores que o tamanho máximo da geometria. Essa simplificação usa o algoritmo Ramer-Douglas-Peucker e a tolerância calculada automaticamente se isso não exceder a tolerância especificada. Este algoritmo calcula o tamanho para armazenar objetos dentro da tolerância especificada. O valor tolerance é opcional.
Para obter exemplos de carregamento de shapefiles, consulte Carregar um shapefile no Amazon Redshift.
- AVRO [AS] 'avro_option'
-
Especifica se os dados de origem estão em formato Avro.
O formato Avro é compatível com COPY nestes serviços e protocolos:
-
Amazon S3
-
Amazon EMR
-
Hosts remotos (SSH)
Avro não é compatível com COPY no DynamoDB.
Avro é um protocolo de serialização de dados. Um arquivo de origem do Avro inclui um esquema que define a estrutura dos dados. O tipo de esquema do Avro deve ser
record
. COPY aceita a criação de arquivos do Avro usando o codec não compactado padrão, bem como os codecs de compactaçãodeflate
esnappy
. Para obter mais informações sobre o Avro, vá até Apache Avro. Os valores válidos para avro_option são os seguintes:
-
'auto'
-
'auto ignorecase'
-
's3://
jsonpaths_file
'
O padrão é
'auto'
.COPY mapeará automaticamente os elemento de dados nos dados JSON ou Avro para as colunas na tabela de destino. Ele faz isso comparando nomes de campo no esquema do Avro com nomes de coluna na tabela de destino. A correspondência diferencia maiúsculas de minúsculas para
'auto'
e não diferencia maiúsculas de minúsculas para'auto ignorecase'
.Como os nomes de coluna em tabelas do Amazon Redshift estão sempre em minúsculas, quando você usa a opção
'auto'
, os nomes de campo do JSON correspondentes também devem estar em minúsculas. Se os nomes dos campos não estiverem todos em minúsculas, você poderá usar a opção'auto ignorecase'
. Com o arguento padrão'auto'
, COPY reconhece apenas o primeiro nível de campos, ou campos externos, na estrutura.Para mapear explicitamente nomes de coluna para nomes de campo do Avro, você pode usar um Arquivo JSONPaths.
Por padrão, COPY tenta comparar todas as colunas na tabela de destino com os nomes de campo do Avro. Para carregar um subconjunto das colunas, você também pode especificar uma lista de colunas. Se uma coluna na tabela de destino for omitida da lista de colunas, COPY carregará a expressão DEFAULT da coluna. Se a coluna de destino não tiver um padrão, COPY tentará carregar NULL. Se uma coluna estiver incluída na lista de colunas e COPY não encontrar um campo correspondente nos dados do Avro, COPY tentará carregar NULL na coluna.
Se COPY tentar atribuir NULL a uma coluna definida como NOT NULL, o comando COPY falhará.
Esquema do Avro
Um arquivo de dados de origem do Avro inclui um esquema que define a estrutura dos dados. COPY lê o esquema que faz parte do arquivo de dados de origem do Avro a fim de mapear elementos de dados para colunas da tabela de destino. O exemplo a seguir mostra um esquema do Avro.
{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }
O esquema do Avro é definido usando-se o formato JSON. O objeto JSON de nível mais alto contém três pares de nome/valor com os nomes, ou chaves,
"name"
,"type"
e"fields"
.Os pares de chaves
"fields"
com uma matriz de objetos que definem o nome e o tipo de dados de cada campo na estrutura de dados. Por padrão, COPY compara automaticamente os nomes de campo com os nomes de coluna. Como nomes de coluna estão sempre em minúsculas, nomes de campo também devem estar em minúsculas, a não ser a opção‘auto ignorecase’
seja especificada. Todos os nomes de campo que não corresponderem a um nome de coluna serão ignorados. A ordem das colunas não importa. No exemplo anterior, COPY é mapeado para os nomes de colunaid
,guid
,name
eaddress
.Com o argumento
'auto'
padrão, COPY compara apenas os objetos no primeiro nível com as colunas. A fim de mapear para níveis mais profundos no esquema, ou se nomes de campo e de coluna não corresponderem, use um arquivo JSONPaths para definir o mapeamento. Para obter mais informações, consulte Arquivo JSONPaths.Se o valor associado a uma chave for um tipo de dados do Avro complexo como byte, matriz, registro, mapa ou link, COPY carregará o valor como uma string, em que a string é a representação JSON dos dados. Aqui, a string é a representação JSON dos dados. COPY carrega tipos de dados enum do Avro como strings, em que o conteúdo é o nome do tipo. Para ver um exemplo, consulte COPY no formato JSON.
O tamanho máximo do cabeçalho de arquivo do Avro, o que inclui o esquema e os metadados do arquivo, é 1 MB.
O tamanho máximo de um único bloco de dados do Avro é 4 MB. Isso é diferente do tamanho máximo da linha. Se o tamanho máximo de um único bloco de dados do Avro for excedido, mesmo se o tamanho de linha resultante for menor que o limite do tamanho de linha de 4 MB, o comando COPY falhará.
Ao calcular o tamanho da linha, o Amazon Redshift contabiliza internamente os caracteres de barra vertical (|) duas vezes. Se os dados de entrada contiverem um número muito grande de caracteres de barra, será possível para o tamanho da linha exceder 4 MB, mesmo se o bloco de dados for menor que 4 MB.
-
- JSON [AS] 'json_option'
-
Os dados de origem estão em formato JSON.
O formato JSON é compatível com COPY nestes serviços e protocolos:
-
Amazon S3
-
COPY do Amazon EMR
-
COPY de SSH
JSON não é compatível com COPY no DynamoDB.
Os valores válidos para json_option são os seguintes:
-
'auto'
-
'auto ignorecase'
-
's3://
jsonpaths_file
' -
'noshred'
O padrão é
'auto'
. O Amazon Redshift não fragmenta os atributos de estruturas JSON em várias colunas ao carregar um documento JSON.Por padrão, COPY tenta comparar todas as colunas na tabela de destino com as chaves de nome de campo do JSON. Para carregar um subconjunto das colunas, você também pode especificar uma lista de colunas. Se as chaves de nome de campo JSON não estiverem todas em minúsculas, você poderá usar a opção
'auto ignorecase'
ou um Arquivo JSONPaths a fim de mapear explicitamente nomes de coluna para chaves de nome de campo JSON.Se uma coluna na tabela de destino for omitida da lista de colunas, COPY carregará a expressão DEFAULT da coluna. Se a coluna de destino não tiver um padrão, COPY tentará carregar NULL. Se uma coluna estiver incluída na lista de colunas e COPY não encontrar um campo correspondente nos dados JSON, COPY tentará carregar NULL na coluna.
Se COPY tentar atribuir NULL a uma coluna definida como NOT NULL, o comando COPY falhará.
COPY mapeará automaticamente os elemento de dados nos dados JSON ou Avro para as colunas na tabela de destino. Ele faz isso combinando chaves de objeto, ou nomes, nos pares de nome-valor de origem com os nomes de colunas na tabela de destino.
Consulte os seguintes detalhes sobre cada valor de json_option:
- 'auto'
-
Com essa opção, a correspondência diferencia maiúsculas de minúsculas. Como os nomes de coluna em tabelas do Amazon Redshift estão sempre em minúsculas, quando você usa a opção
'auto'
, os nomes de campo do JSON correspondentes também devem estar em minúsculas. - 'auto ignorecase'
-
Com essa opção, a correspondência não diferencia maiúsculas de minúsculas. Como os nomes de coluna nas tabelas do Amazon Redshift estão sempre em minúsculas, quando você usa a opção
'auto ignorecase'
, os nomes de campo JSON correspondentes podem ser minúsculas, maiúsculas ou mistas. - 's3://jsonpaths_file'
-
COPY usa o arquivo chamado JSONPaths a fim de mapear os elementos de dados nos dados de origem do JSON para as colunas na tabela de destino. O
s3://jsonpaths_file
deve ser uma chave de objeto do Amazon S3 que referencia explicitamente um único arquivo. Um exemplo é's3://amzn-s3-demo-bucket/jsonpaths.txt
'. O argumento não pode ser um prefixo das chaves. Para obter mais informações sobre como usar um arquivo JSONPaths, consulte Arquivo JSONPaths.Em alguns casos, o arquivo especificado pelo
jsonpaths_file
tem o mesmo prefixo que o caminho especificado porcopy_from_s3_objectpath
para os arquivos de dados. Em caso afirmativo, COPY lê o arquivo JSONPaths como um arquivo de dados e retorna erros. Por exemplo, digamos que seus arquivos de dados usem o caminho do objetos3://amzn-s3-demo-bucket/my_data.json
e seu arquivo JSONPaths és3://amzn-s3-demo-bucket/my_data.jsonpaths
. Nesse caso, COPY tenta carregarmy_data.jsonpaths
como um arquivo de dados. - ‘noshred'
-
Com esta opção, o Amazon Redshift não fragmenta os atributos de estruturas JSON em várias colunas ao carregar um documento JSON.
-
Arquivo de dados JSON
O arquivo de dados JSON contém um conjunto de objetos ou matrizes. COPY carrega cada objeto ou matriz JSON em uma linha na tabela de destino. Cada objeto ou matriz correspondente a uma linha deve ser uma estrutura no nível raiz, autônoma; ou seja, não deve ser um membro de outra estrutura JSON.
Um objeto JSON começa e termina com chaves ({ }) e contém uma coleção de pares de nome-valor desordenada. Cada nome e valor em par são separados por um dois-pontos, e os pares são separados por vírgulas. Por padrão, a chave de objeto, ou o nome, nos pares de nome-valor deve corresponder ao nome da coluna correspondente na tabela. Os nomes de coluna nas tabelas do Amazon Redshift estão sempre em minúsculas, as chaves de nome de campo correspondentes do JSON também deverão estar em minúsculas. Se os nomes de coluna e as chaves do JSON não forem correspondentes, use Arquivo JSONPaths a fim de mapear explicitamente as colunas para as chaves.
A ordem em um objeto JSON não importa. Todos os nomes que não corresponderem a um nome de coluna serão ignorados. A seguir, a estrutura de um objeto JSON simples.
{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }
Uma matriz JSON começa e termina com colchetes ( [ ] ), e contém uma coleção ordenada de valores separados por vírgulas. Se os arquivos de dados usarem matrizes, você deverá especificar um arquivo JSONPaths para corresponder os valores às colunas. A seguir, a estrutura de uma matriz JSON simples.
["value1", value2]
O JSON bastante deve ser bem formado. Por exemplo, os objetos ou as matrizes não podem ser separados por vírgulas ou por quaisquer outros caracteres, exceto o espaço em branco. As strings devem estar entre aspas duplas. As aspas devem ser simples (0x22), e não inclinadas ou "inteligentes".
O tamanho máximo de um objeto ou matriz JSON, inclusive colchetes ou chaves, é 4 MB. Isso é diferente do tamanho máximo da linha. Se o tamanho máximo de um único objeto ou matriz JSON for excedido, mesmo se o tamanho de linha resultante for menor que o limite do tamanho de linha de 4 MB, o comando COPY falhará.
Ao calcular o tamanho da linha, o Amazon Redshift contabiliza internamente os caracteres de barra vertical (|) duas vezes. Se os dados de entrada contiverem um número muito grande de caracteres de barra, será possível para o tamanho da linha exceder 4 MB, mesmo se o tamanho do objeto for menor que 4 MB.
COPY carrega \n
como um caractere de nova linha e \t
como um caractere de tabulação. Para carregar uma barra invertida, use uma barra invertida de escape ( \\
).
COPY pesquisa a origem JSON especificada em busca de um objeto JSON válido ou uma matriz bem formada. Se COPY encontrar algum caractere que não seja um espaço em branco antes de localizar uma estrutura JSON útil, ou entre objetos JSON ou matrizes válidos, COPY retornará um erro para cada instância. Esses erros são válidos para a contagem MAXERROR. Quando a contagem de erros for igual ou exceder MAXERROR, COPY falhará.
Para cada erro, o Amazon Redshift registra uma linha na tabela do sistema STL_LOAD_ERRORS. A coluna LINE_NUMBER registra a última linha do objeto JSON que causou o erro.
Se IGNOREHEADER for especificado, COPY ignorará o número especificado de linhas nos dados JSON. Os caracteres de nova linha nos dados JSON são sempre contados para cálculos de IGNOREHEADER.
COPY carrega strings vazias como campos vazios por padrão. Se EMPTYASNULL for especificado, COPY carregará strings vazias de campos CHAR e VARCHAR como NULL. As strings vazias de outros tipos de dados, como INT, são sempre carregadas com NULL.
As seguintes opções não são compatíveis com JSON:
-
CSV
-
DELIMITER
-
ESCAPE
-
FILLRECORD
-
FIXEDWIDTH
-
IGNOREBLANKLINES
-
NULL AS
-
READRATIO
-
REMOVEQUOTES
Para obter mais informações, consulte COPY no formato JSON. Para obter mais informações sobre estruturas de dados JSON, vá até www.json.org
Arquivo JSONPaths
Se você estiver carregando dados formatados em JSON ou de origem Avro, por padrão, COPY mapeará os elementos de dados no primeiro nível nos dados de origem para as colunas na tabela de destino. Ele faz isso combinando chaves de objeto, ou nomes, nos pares de nome-valor com os nomes de colunas na tabela de destino.
Se os nomes de coluna e as chaves de objeto não forem correspondentes, ou a fim de mapear para níveis mais profundos na hierarquia de dados, você poderá usar um arquivo JSONPaths a fim de mapear explicitamente elemento de dados JSON ou Avro para colunas. O arquivo JSONPaths mapeia elementos de dados JSON para colunas comparando a ordem das colunas na tabela de destino ou na lista de colunas.
O arquivo JSONPaths deve conter somente um único objeto JSON (e não uma matriz). O objeto JSON é um par de nome-valor. A chave de objeto, que é o nome no par de nome-valor, deve ser "jsonpaths"
. O valor no par de nome-valor é uma matriz de expressões JSONPath. Cada expressão JSONPath referencia um único elemento na hierarquia de dados JSON ou no esquema Avro, da mesma maneira como uma expressão XPath se refere a elementos em um documento XML. Para obter mais informações, consulte Expressões JSONPath.
Para usar um arquivo JSONPaths, adicione a palavra-chave JSON ou AVRO ao comando COPY. Especifique o nome do bucket do S3 e o caminho de objeto do arquivo JSONPaths usando o formato a seguir.
COPY tablename FROM 'data_source' CREDENTIALS '
credentials-args
' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';
O valor
deve ser uma chave de objeto do Amazon S3 que referencia explicitamente um único arquivo, como s3://jsonpaths_file
's3://amzn-s3-demo-bucket/jsonpaths.txt'
. Não pode ser um prefixo das chaves.
Em alguns casos, se você estiver carregando do Amazon S3, o arquivo especificado por jsonpaths_file
tem o mesmo prefixo que o caminho especificado por copy_from_s3_objectpath
para os arquivos de dados. Em caso afirmativo, COPY lê o arquivo JSONPaths como um arquivo de dados e retorna erros. Por exemplo, digamos que seus arquivos de dados usem o caminho do objeto s3://amzn-s3-demo-bucket/my_data.json
e seu arquivo JSONPaths é s3://amzn-s3-demo-bucket/my_data.jsonpaths
. Nesse caso, COPY tenta carregar my_data.jsonpaths
como um arquivo de dados.
Se o nome de uma chave for qualquer string diferente de "jsonpaths"
, o comando COPY não retornará um erro, mas ignorará jsonpaths_file e usará o argumento 'auto'
em seu lugar.
Se algum dos seguintes ocorrer, o comando COPY falhará:
-
O JSON está malformado.
-
Existe mais de um objeto JSON.
-
Todos os caracteres, exceto o espaço branco, estão fora do objeto.
-
Um elemento de matriz é uma string vazia ou não é uma string.
MAXERROR não se aplica ao arquivo JSONPaths.
O arquivo JSONPaths não deve ser criptografado, mesmo se a opção ENCRYPTED for especificada.
Para obter mais informações, consulte COPY no formato JSON.
Expressões JSONPath
O arquivo JSONPaths usa expressões JSONPath a fim de mapear campos de dados para colunas de destino. Cada expressão JSONPath corresponde a uma coluna na tabela de destino do Amazon Redshift. A ordem dos elementos de matriz JSONPath deverá corresponder à ordem das colunas na tabela de destino ou na lista de colunas, se uma lista de colunas for usada.
As aspas duplas são necessárias, conforme mostrado, para os nomes de campo e valores. As aspas devem ser simples (0x22), e não inclinadas ou “inteligentes”.
Se um elemento de objeto referenciado por uma expressão JSONPath não for encontrado nos dados JSON, COPY tentará carregar um valor NULL. Se o objeto referenciado for malformado, COPY retornará um erro de carregamento.
Se um elemento de matriz referenciado por uma expressão JSONPath não for encontrado nos dados JSON nem Avro, COPY falhará com o seguinte erro: Invalid JSONPath format: Not
an array or index out of range.
Remova todos os elementos de matriz de JSONPaths que não existirem nos dados de origem e verifique se as matrizes nos dados de origem estão bem formadas.
As expressões JSONPath podem usar a notação de colchetes ou de pontos, mas não pode misturar notações. O exemplo a seguir mostra expressões JSONPath usando notação de colchetes.
{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }
O exemplo a seguir mostra expressões JSONPath usando notação de pontos.
{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }
No contexto da sintaxe COPY do Amazon Redshift, uma expressão JSONPath deve especificar o caminho explícito para um único elemento de nome em uma estrutura de dados hierárquicos JSON ou Avro. O Amazon Redshift não dá suporte a elementos JSONPath, como caracteres curinga ou expressões de filtro, que podem ser resolvidos para um caminho ambíguo ou vários elementos de nome.
Para obter mais informações, consulte COPY no formato JSON.
Usar JSONPaths com dados Avro
O exemplo a seguir mostra um esquema do Avro com vários níveis.
{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }
O exemplo a seguir mostra um arquivo JSONPaths que usa expressões do AvroPath para referenciar o esquema anterior.
{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }
O exemplo JSONPaths inclui os seguintes elementos:
- jsonpaths
-
O nome do objeto JSON que contém as expressões AvroPath.
- [ … ]
-
A matriz JSON está entre colchetes contendo os elementos do caminho.
- $
-
O cifrão se refere ao elemento raiz no esquema do Avro, que é a matriz
"fields"
. - "$.id",
-
O destino da expressão AvroPath. Nesta instância, o destino é o elemento na matriz
"fields"
com o nome"id"
. As expressões são separadas por vírgulas. - "$.friends[0].id"
-
Os colchetes indicam um índice de matriz. Como as expressões JSONPath usam indexação baseada em zero, essa expressão referencia o primeiro elemento na matriz
"friends"
com o nome"id"
.
A sintaxe do esquema do Avro exige o uso de campos internos para definir a estrutura de tipos de dados de registro e matriz. Os campos internos são ignorados pelas expressões AvroPath. Por exemplo, o campo "friends"
define uma matriz chamada "inner_friends"
, que, por sua vez, define um registro chamado "friends_record"
. A expressão AvroPath para referenciar o campo "id"
pode ignorar os campos extras para referenciar diretamente o campo de destino. As expressões AvroPath a seguir referenciam os dois campos que pertencem à matriz "friends"
.
"$.friends[0].id" "$.friends[0].name"
Parâmetros de formato de dados colunar
Além dos formatos de dados padrão, COPY é compatível com os seguintes formatos de dados colunares para COPY do Amazon S3. COPY de formato colunar é compatível com determinadas restrições. Para obter mais informações, consulte COPY de formatos de dados colunar.
- ORC
-
Carrega os dados de um arquivo que usa o formato de arquivo Colunar de linha otimizado (ORC).
- PARQUET
-
Carrega os dados de um arquivo que usa o formato de arquivo Parquet.