Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Parametri del formato dei dati
Per impostazione predefinita, il comando COPY prevede che i dati di origine siano testi UTF-8 delimitati da caratteri. Il delimitatore predefinito è una barra verticale ( | ). Se i dati di origine sono in un altro formato, utilizza i seguenti parametri per specificare il formato dei dati:
Oltre ai formati di dati standard, COPY supporta i seguenti formati di dati a colonna per COPY da Amazon S3:
COPY dal formato a colonne è supportato con alcune restrizioni. Per ulteriori informazioni, consulta COPY da formati di dati a colonna.
Parametri del formato dei dati
- FORMAT [AS]
-
(Facoltativo) Identifica le parole chiave del formato dei dati. Gli argomenti FORMAT sono descritti di seguito.
- CSV [ QUOTE [AS] 'quote_character' ]
-
Consente l'utilizzo del formato CSV nei dati di input. Per creare automaticamente sequenza di escape con i delimitatori, i caratteri di linea e i ritorni a capo, racchiudi il campo nel carattere specificato dal parametro QUOTE. Il carattere virgoletta di default è una virgoletta doppia ( " ). Quando si utilizza il carattere virgolette in un campo, eseguire l'escape del carattere aggiungendo altre virgolette. Ad esempio, se il carattere virgoletta è una virgoletta doppia, per inserire la stringa
A "quoted" word
il file di input deve includere la stringa"A ""quoted"" word"
. Quando si utilizza il parametro CSV, il delimitatore predefinito è una virgola ( , ). È possibile specificare un delimitatore diverso utilizzando il parametro DELIMITER.Quando un campo è racchiuso tra virgolette, lo spazio tra i delimitatori e i caratteri delle virgolette viene ignorato. Se il delimitatore è un carattere di spazio, ad esempio un carattere di tabulazione, il delimitatore non viene trattato come spazio.
Il CSV non può essere utilizzato con FIXEDWIDTH, REMOVEQUOTES o ESCAPE.
- QUOTE [AS] 'quote_character'
-
Facoltativo. Specifica il carattere da utilizzare come carattere virgoletta quando si utilizza il parametro CSV. Il carattere predefinito è una doppia virgoletta ( " ). Se si utilizzi il parametro QUOTE per definire un carattere virgoletta diverso dalla doppia virgoletta, non è necessario creare una sequenza di escape con le virgolette doppie all'interno del campo. Il parametro QUOTE può essere utilizzato solo con il parametro CSV. La parola chiave AS è facoltativa.
- DELIMITER [AS] ['delimiter_char']
-
Speciifica i caratteri utilizzati per separare i campi nel file di input, ad esempio un carattere pipe (
|
), una virgola (,
), un tab (\t
) o più caratteri come.|~|
Sono supportati caratteri non stampabili. I caratteri possono anche essere rappresentati in ottale come unità di codice UTF-8. Per ottale, usa il formato '\ ddd', dove' d 'è una cifra ottale (0—7). Il delimitatore predefinito è un carattere pipe (|
), a meno che non venga utilizzato il parametro CSV, nel qual caso il delimitatore predefinito è una virgola ().,
La parola chiave AS è facoltativa. DELIMITER non può essere utilizzato con FIXEDWIDTH. - FIXEDWIDTH 'fixedwidth_spec'
-
Carica i dati da un file in cui ogni larghezza di colonna è fissa, invece di avere colonne separate da un delimitatore. La stringa fixedwidth_spec specifica l'etichetta e la larghezza della colonna definite dall'utente. L'etichetta della colonna può essere sia una stringa di testo sia un intero, a seconda di ciò che sceglie l'utente. L'etichetta della colonna non ha alcuna relazione con il nome della colonna. L'ordine delle coppie etichetta/larghezza deve corrispondere esattamente all'ordine delle colonne della tabella. FIXEDWIDTH non può essere utilizzato con CSV o DELIMITER. In Amazon Redshift, la lunghezza delle colonne CHAR e VARCHAR è espressa in byte, quindi assicurati che la larghezza della colonna specificata corrisponda alla lunghezza binaria dei caratteri multibyte durante la preparazione del file da caricare. Per ulteriori informazioni, consulta Tipi di carattere.
Di seguito viene mostrato il formato per fixedwidth_spec:
'colLabel1:colWidth1,colLabel:colWidth2, ...'
- SHAPEFILE [ SIMPLIFY [AUTO] ['tolleranza'] ]
-
Consente l'utilizzo del formato SHAPEFILE nei dati di input. Per impostazione predefinita, la prima colonna dello shapefile è una colonna
GEOMETRY
oIDENTITY
. Tutte le colonne successive seguono l'ordine specificato nello shapefile.Non è possibile utilizzare SHAPEFILE con FIXEDWIDTH, REMOVEQUOTES o ESCAPE.
Per utilizzare oggetti
GEOGRAPHY
conCOPY FROM SHAPEFILE
, prima importa in un colonnaGEOMETRY
, quindi converti gli oggetti in oggettiGEOGRAPHY
.- SIMPLIFY [tolleranza]
-
(Facoltativo) Semplifica tutte le geometrie durante il processo di inserimento utilizzando l'algoritmo e la tolleranza specificata. Ramer-Douglas-Peucker
- SIMPLIFY AUTO [tolleranza]
-
(Facoltativo) Semplifica solo le geometrie più grandi della dimensione massima della geometria. Questa semplificazione utilizza l' Ramer-Douglas-Peuckeralgoritmo e la tolleranza calcolata automaticamente se questa non supera la tolleranza specificata. Questo algoritmo calcola la dimensione per memorizzare gli oggetti entro la tolleranza specificata. Il valore tolleranza è facoltativo.
Per esempi di caricamento di uno shapefile, consultare Caricamento di uno shapefile in Amazon Redshift.
- AVRO [AS] 'avro_option'
-
Specifica che i dati sorgente sono in formato Avro.
Il formato Avro è supportato per COPY da questi servizi e protocolli:
-
Amazon S3
-
Amazon EMR
-
Host remoto (SSH)
Avro non è supportato per COPY da DynamoDB.
Avro è un protocollo di serializzazione dei dati. Un file sorgente Avro include uno schema che definisce la struttura dei dati. Il tipo di schema Avro deve essere
record
. COPY accetta file Avro creati usando il codec di default non compresso così come i codec di compressionedeflate
esnappy
. Per ulteriori informazioni su Avro, consultare Apache Avro. I valori validi per avro_option sono i seguenti:
-
'auto'
-
'auto ignorecase'
-
's3://
jsonpaths_file
'
Il valore predefinito è
'auto'
.COPY mappa automaticamente gli elementi di dati nei dati di origine Avro alle colonne della tabella di destinazione. Lo fa associando i nomi dei campi nello schema Avro ai nomi delle colonne nella tabella di destinazione. La corrispondenza prevede una distinzione tra lettere maiuscole e minuscole per
'auto'
e non fa distinzione tra lettere maiuscole e minuscole per'auto ignorecase'
.I nomi delle colonne nelle tabelle Amazon Redshift sono sempre in minuscolo, quindi quando si utilizza l'opzione
'auto'
, anche i nomi dei campi corrispondenti devono essere in minuscolo. Se i nomi dei campi non sono tutti minuscoli, è possibile utilizzare l'opzione'auto ignorecase'
. Con l'argomento'auto'
di default, COPY riconosce solo il primo livello di campi, o campi esterni, nella struttura.Per mappare esplicitamente i nomi delle colonne ai nomi dei campi Avro, è possibile utilizzare un JSONPaths file.
Per impostazione predefinita, COPY tenta di far corrispondere tutte le colonne della tabella di destinazione ai nomi dei campi Avro. Per caricare un sottoinsieme delle colonne, è possibile specificare facoltativamente un elenco di colonne. Se una colonna nella tabella di destinazione viene omessa dall'elenco delle colonne, COPY carica l'espressione DEFAULT della colonna di destinazione. Se la colonna di destinazione non ha un valore di default, COPY prova a caricare NULL. Se una colonna è inclusa nell'elenco di colonne e COPY non trova un campo corrispondente nei dati Avro, COPY prova a caricare NULL nella colonna.
Se COPY tenta di assegnare NULL a una colonna definita come NOT NULL, il comando COPY non viene eseguito.
Schema Avro
Un file di dati sorgente Avro include uno schema che definisce la struttura dei dati. COPY legge lo schema che fa parte del file di dati sorgente Avro per mappare gli elementi di dati sulle colonne della tabella di destinazione. L'esempio seguente mostra uno schema Avro.
{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }
Lo schema Avro è definito utilizzando il formato JSON. L'oggetto JSON di livello superiore contiene tre coppie nome-valore con i nomi o le chiavi,
"name"
,"type"
e"fields"
.Le chiavi
"fields"
si accoppiano con un array di oggetti che definiscono il nome e il tipo di dati di ogni campo nella struttura dei dati. Per impostazione predefinita, COPY fa corrispondere automaticamente i nomi dei campi ai nomi delle colonne. I nomi delle colonne sono sempre in minuscolo, quindi anche i nomi dei campi corrispondenti devono essere in minuscolo a meno che non si specifichi l'opzione‘auto ignorecase’
. I nomi dei campi che non corrispondono al nome di una colonna vengono ignorati. L'ordine non ha importanza. Nell'esempio precedente COPY mappa i nomi delle colonneid
,guid
,name
eaddress
.Con l'argomento predefinito
'auto'
, COPY fa corrispondere solo agli oggetti di primo livello alle colonne. Per eseguire la mappatura a livelli più profondi dello schema o se i nomi dei campi e i nomi delle colonne non corrispondono, utilizza un JSONPaths file per definire la mappatura. Per ulteriori informazioni, consulta JSONPaths file.Se il valore associato a una chiave è un tipo di dati Avro complesso come byte, array, record, mappa o link, COPY carica il valore come stringa. Qui, la stringa è la rappresentazione JSON dei dati. COPY carica i tipi di dati enum Avro come stringhe, dove il contenuto è il nome del tipo. Per un esempio, consultare COPY dal formato JSON.
La dimensione massima dell'intestazione del file Avro, che include lo schema e i metadati del file, è di 1 MB.
La dimensione massima di un singolo blocco dati Avro è di 4 MB. È diverso dalla dimensione massima della riga. Se si supera la dimensione massima di un singolo blocco dati Avro, anche se la dimensione della riga risultante è inferiore al limite di 4 MB, il comando COPY non viene eseguito.
Nel calcolo delle dimensioni delle righe, Amazon Redshift internamente conta due volte i caratteri pipe ( | ). Se i dati immessi contengono un numero molto elevato di caratteri pipe, è possibile che la dimensione delle righe superi i 4 MB anche se il blocco di dati è inferiore a 4 MB.
-
- JSON [AS] 'json_option'
-
I dati sorgente sono in formato JSON.
Il formato JSON è supportato per COPY da questi servizi e protocolli:
-
Amazon S3
-
COPY da Amazon EMR
-
COPY da SSH
JSON non è supportato per COPY da DynamoDB.
I valori validi per json_option sono i seguenti:
-
'auto'
-
'auto ignorecase'
-
's3://
jsonpaths_file
' -
'noshred'
Il valore predefinito è
'auto'
. Amazon Redshift non divide gli attributi delle strutture JSON in più colonne durante il caricamento di un documento JSON.Per impostazione predefinita, COPY tenta di far corrispondere tutte le colonne della tabella di destinazione alle chiavi dei nomi dei campi JSON. Per caricare un sottoinsieme delle colonne, è possibile specificare facoltativamente un elenco di colonne. Se le chiavi del nome del campo JSON non sono tutte in minuscolo, è possibile utilizzare l'opzione
'auto ignorecase'
o un JSONPaths file per mappare esplicitamente i nomi delle colonne sulle chiavi dei nomi dei campi JSON.Se una colonna nella tabella di destinazione viene omessa dall'elenco delle colonne, COPY carica l'espressione DEFAULT della colonna di destinazione. Se la colonna di destinazione non ha un valore di default, COPY prova a caricare NULL. Se una colonna è inclusa nell'elenco di colonne e COPY non trova un campo corrispondente nei dati JSON, COPY prova a caricare NULL nella colonna.
Se COPY tenta di assegnare NULL a una colonna definita come NOT NULL, il comando COPY non viene eseguito.
COPY mappa automaticamente gli elementi di dati nei dati di origine JSON alle colonne della tabella di destinazione. Lo fa associando chiavi di oggetti, o nomi, nelle coppie nome-valore di origine ai nomi delle colonne nella tabella di destinazione.
Fare riferimento ai seguenti dettagli su ogni valore json_option:
- 'auto'
-
Questa opzione fa distinzione tra lettere maiuscole e minuscole. I nomi delle colonne nelle tabelle Amazon Redshift sono sempre in minuscolo, quindi quando si utilizza l'opzione
'auto'
, anche i nomi dei campi JSON corrispondenti devono essere in minuscolo. - 'auto ignorecase'
-
Con questa opzione, non si fa distinzione tra maiuscole e minuscole. I nomi delle colonne nelle tabelle Amazon Redshift sono sempre minuscoli, quindi quando si utilizza l'opzione
'auto ignorecase'
, i nomi dei campi JSON corrispondenti possono essere minuscoli, maiuscoli o misti. - 's3://jsonpaths_file'
-
Con questa opzione, COPY utilizza il JSONPaths file denominato per mappare gli elementi di dati nei dati di origine JSON alle colonne della tabella di destinazione. L'argomento
s3://jsonpaths_file
deve essere una chiave oggetto Amazon S3 che fa esplicito riferimento a un singolo file. Un esempio è's3://amzn-s3-demo-bucket/jsonpaths.txt
'. L'argomento non può essere un prefisso di chiave. Per ulteriori informazioni sull'utilizzo di un JSONPaths file, consultaJSONPaths file.In alcuni casi, il file specificato da
jsonpaths_file
ha lo stesso prefisso del percorso specificato dacopy_from_s3_objectpath
per i file di dati. In tal caso, COPY legge il JSONPaths file come file di dati e restituisce errori. Ad esempio, supponiamo che i file di dati utilizzino il percorso dell'oggettos3://amzn-s3-demo-bucket/my_data.json
e che il JSONPaths file lo sia.s3://amzn-s3-demo-bucket/my_data.jsonpaths
In questo caso, COPY prova a caricaremy_data.jsonpaths
come file di dati. - 'noshred'
-
Con questa opzione, Amazon Redshift non divide gli attributi delle strutture JSON in più colonne durante il caricamento di un documento JSON.
-
File di dati JSON
Il file di dati JSON contiene un insieme di oggetti o array. COPY carica ogni oggetto o array JSON in una riga della tabella di destinazione. Ogni oggetto o array corrispondente a una riga deve essere una struttura autonoma a livello di root, cioè non deve essere membro di un'altra struttura JSON.
Un oggetto JSON inizia e termina con delle parentesi ( { } ) e contiene un insieme non ordinato di coppie nome-valore. Ogni coppia nome e valore è separata da due punti e le coppie sono separate da virgole. Per impostazione predefinita, la chiave oggetto, o nome, nelle coppie nome-valore deve corrispondere al nome della colonna corrispondente nella tabella. I nomi delle colonne nelle tabelle Amazon Redshift sono sempre in minuscolo, quindi anche le chiavi dei nomi dei campi JSON corrispondenti devono essere in minuscolo. Se i nomi delle colonne e le chiavi JSON non corrispondono, utilizza un JSONPaths file per mappare esplicitamente le colonne sulle chiavi.
L'ordine non ha importanza in un oggetto JSON. I nomi che non corrispondono al nome di una colonna vengono ignorati. Di seguito viene mostrata la struttura di un semplice oggetto JSON.
{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }
Un array JSON inizia e termina con delle parentesi ( { } ) e contiene un insieme ordinato di valori separati da virgole. Se i file di dati utilizzano matrici, è necessario specificare un JSONPaths file per abbinare i valori alle colonne. Di seguito viene mostrata la struttura di un semplice array JSON.
["value1", value2]
Il JSON deve essere ben formato. Ad esempio, gli oggetti o gli array non possono essere separati da virgole o altri caratteri tranne lo spazio. Le stringhe devono essere racchiuse tra virgolette doppie. I caratteri virgolette devono essere virgolette semplici (0x22), non oblique o "intelligenti".
La dimensione massima di un singolo oggetto o array JSON, compresi parentesi graffe o quadre, è di 4 MB. È diverso dalla dimensione massima della riga. Se la dimensione massima di un singolo oggetto o array JSON viene superata, anche se la dimensione della riga risultante è inferiore al limite di 4 MB, il comando COPY non viene eseguito.
Nel calcolo delle dimensioni delle righe, Amazon Redshift internamente conta due volte i caratteri pipe ( | ). Se i dati immessi contengono un numero molto elevato di caratteri pipe, è possibile che la dimensione delle righe superi i 4 MB anche se la dimensione dell'oggetto è inferiore a 4 MB.
COPY carica \n
come carattere newline e carica \t
come carattere di tabulazione. Per caricare una barra rovesciata, crea una sequenza di escape con una barra rovesciata ( \\
).
COPY cerca il sorgente JSON specificato per un oggetto o array JSON valido e ben strutturato. Se COPY rileva caratteri non vuoti prima di individuare una struttura JSON utilizzabile o tra oggetti o array JSON validi, COPY restituisce un errore per ogni istanza. Questi errori contano ai fini del conteggio MAXERROR. Quando il conteggio degli errori è uguale o superiore a MAXERROR, COPY fallisce.
Per ogni errore, Amazon Redshift registra una riga nella tabella di sistema STL_LOAD_ERRORS. La colonna LINE_NUMBER registra l'ultima riga dell'oggetto JSON che ha causato l'errore.
Se è specificato IGNOREHEADER, COPY ignora il numero di righe specificato nei dati JSON. I caratteri newline nei dati JSON sono sempre conteggiati per i calcoli IGNOREHEADER.
COPY carica le stringhe vuote come campi vuoti per impostazione predefinita. Se è specificato EMPTYASNULL, COPY carica le stringhe vuote per i campi CHAR e VARCHAR come NULL. Le stringhe vuote per altri tipi di dati, come ad esempio INT, vengono sempre caricate come NULL.
Con JSON non sono supportate le seguenti opzioni:
-
CSV
-
DELIMITER
-
ESCAPE
-
FILLRECORD
-
FIXEDWIDTH
-
IGNOREBLANKLINES
-
NULL AS
-
READRATIO
-
REMOVEQUOTES
Per ulteriori informazioni, consulta COPY dal formato JSON. Per ulteriori informazioni sulle strutture dati JSON, visita il sito http://www.json.org/
JSONPaths file
Se si carica da dati di origine con formattazione JSON o Avro, per impostazione predefinita COPY mappa gli elementi di dati di primo livello nei dati di origine alle colonne della tabella di destinazione. Lo fa associando ogni nome, o chiave di oggetti, in una coppia nome-valore al nome di una colonna nella tabella di destinazione.
Se i nomi delle colonne e le chiavi degli oggetti non corrispondono o per eseguire il mapping a livelli più profondi nella gerarchia dei dati, puoi utilizzare un JSONPaths file per mappare in modo esplicito gli elementi di dati JSON o Avro alle colonne. Il JSONPaths file mappa gli elementi di dati JSON alle colonne facendo corrispondere l'ordine delle colonne nella tabella di destinazione o nell'elenco delle colonne.
Il JSONPaths file deve contenere solo un singolo oggetto JSON (non un array). L'oggetto JSON è una coppia nome-valore. La chiave oggetto, che è il nome nella coppia nome-valore, deve essere "jsonpaths"
. Il valore nella coppia nome-valore è una matrice di espressioni. JSONPath Ogni JSONPath espressione fa riferimento a un singolo elemento nella gerarchia dei dati JSON o nello schema Avro, in modo analogo a come un' XPathespressione si riferisce agli elementi di un documento XML. Per ulteriori informazioni, consulta JSONPath espressioni.
Per utilizzare un JSONPaths file, aggiungete la parola chiave JSON o AVRO al comando COPY. Specificate il nome del bucket S3 e il percorso dell'oggetto del JSONPaths file utilizzando il seguente formato.
COPY tablename FROM 'data_source' CREDENTIALS '
credentials-args
' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';
Il valore
deve essere una chiave oggetto di Amazon S3 che fa riferimento esplicitamente a singolo file, come s3://jsonpaths_file
's3://amzn-s3-demo-bucket/jsonpaths.txt'
. Non può essere un prefisso di chiave.
In alcuni casi, se il caricamento avviene da Amazon S3 il file specificato da jsonpaths_file
ha lo stesso prefisso del percorso specificato da copy_from_s3_objectpath
per i file di dati. In tal caso, COPY legge il JSONPaths file come file di dati e restituisce errori. Ad esempio, supponiamo che i file di dati utilizzino il percorso dell'oggetto s3://amzn-s3-demo-bucket/my_data.json
e che il JSONPaths file lo sia. s3://amzn-s3-demo-bucket/my_data.jsonpaths
In questo caso, COPY prova a caricare my_data.jsonpaths
come file di dati.
Se il nome della chiave è una stringa diversa da "jsonpaths"
, il comando COPY non restituisce un errore, ma ignora jsonpaths_file e usa invece l'argomento 'auto'
.
Se si verifica una delle seguenti situazioni, il comando COPY non va a buon fine:
-
Il JSON ha un formato errato.
-
C'è più di un oggetto JSON.
-
Tutti i caratteri tranne lo spazio esistono al di fuori dell'oggetto.
-
Un elemento array è una stringa vuota o non è una stringa.
MAXERROR non si applica al JSONPaths file.
Il JSONPaths file non deve essere crittografato, anche se l'ENCRYPTEDopzione è specificata.
Per ulteriori informazioni, consulta COPY dal formato JSON.
JSONPath espressioni
Il JSONPaths file utilizza JSONPath espressioni per mappare i campi di dati alle colonne di destinazione. Ogni JSONPath espressione corrisponde a una colonna nella tabella di destinazione di Amazon Redshift. L'ordine degli elementi dell' JSONPath array deve corrispondere all'ordine delle colonne nella tabella di destinazione o nell'elenco delle colonne, se viene utilizzato un elenco di colonne.
I caratteri delle doppie virgolette sono richiesti come mostrato, sia per i nomi dei campi sia per i valori. I caratteri delle virgolette devono essere virgolette semplici (0x22), non oblique o "intelligenti".
Se un elemento dell'oggetto a cui fa riferimento un' JSONPath espressione non viene trovato nei dati JSON, COPY tenta di caricare un valore NULL. Se l'oggetto di riferimento ha un formato errato, COPY restituisce un errore di caricamento.
Se un elemento dell'array a cui fa riferimento un' JSONPath espressione non viene trovato nei dati JSON o Avro, COPY ha esito negativo e restituisce il seguente errore: Invalid JSONPath format: Not
an array or index out of range.
Rimuovi tutti gli elementi dell'array JSONPaths che non esistono nei dati di origine e verifica che gli array nei dati di origine siano ben formati.
Le JSONPath espressioni possono utilizzare la notazione tra parentesi o la notazione a punti, ma non è possibile combinare le notazioni. L'esempio seguente mostra le JSONPath espressioni che utilizzano la notazione tra parentesi.
{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }
L'esempio seguente mostra le JSONPath espressioni che utilizzano la notazione a punti.
{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }
Nel contesto della sintassi Amazon Redshift COPY, un' JSONPath espressione deve specificare il percorso esplicito di un singolo elemento del nome in una struttura dati gerarchica JSON o Avro. Amazon Redshift non supporta alcun JSONPath elemento, come caratteri jolly o espressioni di filtro, che potrebbe risolversi in un percorso ambiguo o in più elementi del nome.
Per ulteriori informazioni, consulta COPY dal formato JSON.
Utilizzo con Avro Data JSONPaths
L'esempio seguente mostra uno schema Avro con più livelli.
{ "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"} ] }
L'esempio seguente mostra un JSONPaths file che utilizza AvroPath espressioni per fare riferimento allo schema precedente.
{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }
L' JSONPaths esempio include i seguenti elementi:
- jsonpath
-
Il nome dell'oggetto JSON che contiene le AvroPath espressioni.
- [ … ]
-
Le parentesi racchiudono l'array JSON che contiene gli elementi del percorso.
- $
-
Il segno del dollaro fa riferimento all'elemento root nello schema Avro, che è l'array
"fields"
. - "$.id",
-
La destinazione dell' AvroPath espressione. In questa istanza, la destinazione è l'elemento nell'array
"fields"
con il nome"id"
. Le espressioni sono separate da virgole. - "$.friends[0].id"
-
Le parentesi indicano un indice di matrice. JSONPath le espressioni utilizzano l'indicizzazione a base zero, quindi questa espressione fa riferimento al primo elemento dell'array con il
"friends"
nome."id"
La sintassi dello schema Avro richiede l'utilizzo di campi interni per definire la struttura dei tipi di dati record e array. I campi interni vengono ignorati dalle espressioni. AvroPath Per esempio, il campo "friends"
definisce un array chiamato "inner_friends"
, che a sua volta definisce un record chiamato "friends_record"
. L' AvroPath espressione che fa riferimento al campo "id"
può ignorare i campi aggiuntivi per fare riferimento direttamente al campo di destinazione. Le AvroPath espressioni seguenti fanno riferimento ai due campi che appartengono all'"friends"
array.
"$.friends[0].id" "$.friends[0].name"
Parametri del formato dei dati a colonna
Oltre ai formati di dati standard, COPY supporta i seguenti formati di dati a colonna per COPY da Amazon S3: COPY dal formato a colonne è supportato con alcune restrizioni. Per ulteriori informazioni, consulta COPY da formati di dati a colonna.
- ORC
-
Carica i dati da un file che utilizza il formato di file ORC (Optimized Row Columnar).
- PARQUET
-
Carica i dati da un file che utilizza il formato di file Parquet.