Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
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" wordil 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']
-
Specifica i caratteri utilizzati per separare i campi del file di input, ad esempio un carattere pipe (
|), una virgola (,), una tabulazione (\t) o più caratteri come|~|. Sono supportati i caratteri non stampabili. I caratteri possono anche essere rappresentati in ottale come unità di codice UTF-8. Per ottale, utilizza 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
GEOMETRYoIDENTITY. Tutte le colonne successive seguono l'ordine specificato nello shapefile.Non è possibile utilizzare SHAPEFILE con FIXEDWIDTH, REMOVEQUOTES o ESCAPE.
Per utilizzare oggetti
GEOGRAPHYconCOPY FROM SHAPEFILE, prima importa in un colonnaGEOMETRY, quindi converti gli oggetti in oggettiGEOGRAPHY.- SIMPLIFY [tolleranza]
-
(Facoltativo) Semplifica tutte le geometrie durante il processo di importazione dati utilizzando l'algoritmo Ramer-Douglas-Peucker e la tolleranza specificata.
- SIMPLIFY AUTO [tolleranza]
-
(Facoltativo) Semplifica solo le geometrie più grandi della dimensione massima della geometria. Questa semplificazione utilizza l'algoritmo Ramer-Douglas-Peucker 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 compressionedeflateesnappy. 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 File JSONPath.
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,nameeaddress.Con l'argomento predefinito
'auto', COPY fa corrispondere solo agli oggetti di primo livello alle colonne. Per mappare a livelli più profondi nello schema o se i nomi dei campi e delle colonne non corrispondono, utilizza un file JSONPath per definire la mappatura. Per ulteriori informazioni, consulta File JSONPath.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 File JSONPath 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. Pertanto, quando utilizzi l’opzione
'auto ignorecase', i nomi dei campi JSON corrispondenti possono essere minuscoli, maiuscoli o maiuscoli e minuscoli. - 's3://jsonpaths_file'
-
Con questa opzione, COPY utilizza il file JSONPaths per mappare gli elementi dei dati nei dati di origine JSON sulle colonne della tabella di destinazione. L'argomento
s3://jsonpaths_filedeve 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 file JSONPath, consultare File JSONPath.In alcuni casi, il file specificato da
jsonpaths_fileha lo stesso prefisso del percorso specificato dacopy_from_s3_objectpathper i file di dati. In tal caso, COPY legge il file JSONPaths come file di dati e restituisce errori. Ad esempio, si supponga che i file di dati utilizzino il percorso dell'oggettos3://amzn-s3-demo-bucket/my_data.jsone che il file JSONPaths sias3://amzn-s3-demo-bucket/my_data.jsonpaths. In questo caso, COPY prova a caricaremy_data.jsonpathscome 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 File JSONPath 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 array, è necessario specificare un file JSONPath per far corrispondere 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/
File JSONPath
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 delle chiavi oggetto non corrispondono o per mappare a livelli più profondi nella gerarchia dei dati, è possibile utilizzare un file JSONPath per mappare esplicitamente gli elementi di dati JSON o Avro sulle colonne. Il file JSONPath mappa gli elementi di dati JSON sulle colonne facendo corrispondere l'ordine delle colonne nella tabella di destinazione o nell'elenco delle colonne.
Il file JSONPath 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 è un array di espressioni JSONPath. Ogni espressione JSONPath fa riferimento a un singolo elemento nella gerarchia dati JSON o nello schema Avro, analogamente a come un'espressione XPath fa riferimento agli elementi di un documento XML. Per ulteriori informazioni, consulta Espressioni JSONPath.
Per utilizzare un file JSONPaths, aggiungere la parola chiave JSON o AVRO al comando COPY. Specificare il nome del bucket S3 e il percorso dell'oggetto del file JSONPaths 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 file JSONPaths come file di dati e restituisce errori. Ad esempio, si supponga che i file di dati utilizzino il percorso dell'oggetto s3://amzn-s3-demo-bucket/my_data.json e che il file JSONPaths 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 file JSONPath.
Il file JSONPath non deve essere crittato, anche se è specificata l'opzione ENCRYPTED.
Per ulteriori informazioni, consulta COPY dal formato JSON.
Espressioni JSONPath
Il file JSONPath utilizza le espressioni JSONPath per mappare i campi di dati sulle colonne di destinazione. Ogni espressione JSONPath corrisponde a una colonna nella tabella di destinazione di Amazon Redshift. L'ordine degli elementi dell'array JSONPath deve corrispondere all'ordine delle colonne della tabella di destinazione o, se viene utilizzato un elenco di colonne, di quest'ultimo.
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 oggetto a cui fa riferimento un'espressione JSONPath 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 array a cui fa riferimento un'espressione JSONPath non viene trovato nei dati JSON o Avro, COPY non va a buon fine e restituisce il seguente errore: Invalid JSONPath format: Not
an array or index out of range. Rimuovi qualsiasi elemento array dal JSONPath che non esiste nei dati sorgente e verifica che gli array nei dati sorgente abbiano un formato corretto.
Le espressioni JSONPath possono utilizzare la notazione con parentesi o punti, ma non è possibile mischiare le notazioni. L'esempio seguente mostra le espressioni JSONPath che utilizzano la notazione con parentesi.
{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }
L'esempio seguente mostra le espressioni JSONPath che utilizzano la notazione con punti.
{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }
Nel contesto della sintassi di COPY di Amazon Redshift, un'espressione JSONPath deve specificare il percorso esplicito di un singolo elemento del nome in una struttura di dati gerarchica JSON o Avro. Amazon Redshift non supporta elementi JSONPath, come caratteri jolly o espressioni filtro, che potrebbero determinare un percorso ambiguo o elementi con più nomi.
Per ulteriori informazioni, consulta COPY dal formato JSON.
Utilizzo di JSONPath con dati Avro
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 file JSONPath che utilizza espressioni AvroPath per fare riferimento allo schema precedente.
{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }
L'esempio di JSONPath include i seguenti elementi:
- jsonpath
-
Il nome dell'oggetto JSON che contiene le espressioni AvroPath.
- [ … ]
-
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'espressione AvroPath. 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 dell'array. Le espressioni JSONPath utilizzano un'indicizzazione a base zero, quindi questa espressione fa riferimento al primo elemento nell'array
"friends"con il 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 sono 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'espressione AvroPath che fa riferimento al campo "id" può ignorare i campi extra per fare riferimento direttamente al campo di destinazione. Le seguenti espressioni AvroPath fanno riferimento ai due campi che appartengono all'array "friends".
"$.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.