Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime
Carica i dati da un percorso del file in una tabella Delta. Si tratta di un'operazione idempotente e riprovabile. I file nel percorso di origine che sono già stati caricati vengono ignorati. Questo vale anche se i file sono stati modificati dopo il caricamento.
Per esempi, vedere Modelli di caricamento dei dati comuni usando COPY INTO.
Sintassi
COPY INTO target_table [ BY POSITION | ( col_name [ , <col_name> ... ] ) ]
FROM { source_clause |
( SELECT expression_list FROM source_clause ) }
FILEFORMAT = data_source
[ VALIDATE [ ALL | num_rows ROWS ] ]
[ FILES = ( file_name [, ...] ) | PATTERN = glob_pattern ]
[ FORMAT_OPTIONS ( { data_source_reader_option = value } [, ...] ) ]
[ COPY_OPTIONS ( { copy_option = value } [, ...] ) ]
source_clause
source [ WITH ( [ CREDENTIAL { credential_name |
(temporary_credential_options) } ]
[ ENCRYPTION (encryption_options) ] ) ]
Parametri
target_tableIdentifica una tabella Delta esistente. Il target_table non deve includere una specifica temporale o una specifica delle opzioni.
Se il nome della tabella viene specificato sotto forma di posizione, ad esempio,
delta.`/path/to/table`, Il catalogo unity può gestire l'accesso alle posizioni in cui viene scritto. È possibile scrivere in una posizione esterna in base a:- Definire la posizione come esterna e avere autorizzazioni
WRITE FILESsu quella posizione esterna. - Avere
WRITE FILESautorizzazioni sulle credenziali di archiviazione specifiche che permettono di scrivere in un luogo usando:COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)
Per altri dettagli, vedere Connettersi all'archiviazione di oggetti cloud usando il catalogo unity .
- Definire la posizione come esterna e avere autorizzazioni
BY POSITION| ( col_name [ , <col_name> ... ] )Trova la corrispondenza tra le colonne di origine e le colonne della tabella di destinazione in base alla posizione ordinale. La conversione di tipo delle colonne corrispondenti viene eseguita automaticamente.
Questo parametro è supportato solo per il formato di file CSV senza intestazione. È necessario specificare
FILEFORMAT = CSV.FORMAT_OPTIONSdeve anche essere impostato su("headers" = "false")(FORMAT_OPTIONS ("headers" = "false")è l'impostazione predefinita).Opzione di sintassi 1:
BY POSITION- Corrisponde automaticamente le colonne di origine alle colonne della tabella di destinazione secondo la posizione ordinale.
- La corrispondenza dei nomi predefinita non viene utilizzata per il confronto.
-
IDENTITYcolonne eGENERATEDcolonne della tabella di destinazione sono ignorate durante il confronto con le colonne di origine. - Se il numero di colonne di origine non è uguale alle colonne della tabella di destinazione filtrate,
COPY INTOgenera un errore.
Opzione di sintassi 2:
( col_name [ , <col_name> ... ] )- Trova la corrispondenza tra le colonne di origine e le colonne della tabella di destinazione specificate in base alla posizione ordinale relativa usando un elenco dei nomi di colonna della tabella di destinazione tra parentesi, separati da virgole.
- L'ordine delle colonne della tabella originale e i nomi delle colonne non vengono usati per la corrispondenza.
-
IDENTITYcolonne eGENERATEDcolonne non possono essere specificate nell'elenco dei nomi di colonne, altrimentiCOPY INTOgenera un errore. - Impossibile duplicare le colonne specificate.
- Quando il numero di colonne di origine non è uguale alle colonne della tabella specificate,
COPY INTOgenera un errore. - Per le colonne non specificate nell'elenco dei nomi di colonna,
COPY INTOassegna i valori predefiniti, se presenti, e assegna inNULLcaso contrario. Se una colonna non è nullable,COPY INTOgenera un errore.
- Corrisponde automaticamente le colonne di origine alle colonne della tabella di destinazione secondo la posizione ordinale.
sourcePercorso del file da cui caricare i dati. I file in questo percorso devono avere il formato specificato in
FILEFORMAT. La posizione viene fornita sotto forma di URI.L'accesso al percorso di origine può essere fornito tramite:
credential_nameNome facoltativo delle credenziali usate per accedere o scrivere alla posizione di archiviazione. Questa credenziale viene usata solo se il percorso del file non è incluso in un percorso esterno. Vedere credential_name.
Credenziali temporanee in linea.
- Definire l'ubicazione di origine come ubicazione esterna e disporre delle autorizzazioni
READ FILESsull'ubicazione esterna attraverso il Catalogo Unity. - Utilizzo di una credenziale di archiviazione denominata con autorizzazioni
READ FILESche forniscono l'autorizzazione per la lettura da una posizione tramite Unity Catalog.
Non è necessario fornire credenziali in linea o denominate se il percorso è già designato come ubicazione esterna per cui si dispone delle autorizzazioni di utilizzo. Per altri dettagli, vedere Panoramica delle posizioni esterne .
Nota
Se il percorso del file di origine è un percorso radice, aggiungere una barra (
/) alla fine del percorso del file,s3://my-bucket/ad esempio .Le opzioni delle credenziali accettate sono:
-
AZURE_SAS_TOKENper ADLS e Archiviazione Blob di Azure -
AWS_ACCESS_KEY,AWS_SECRET_KEY, eAWS_SESSION_TOKENper AWS S3
Le opzioni di crittografia accettate sono:
-
TYPE = 'AWS_SSE_C', eMASTER_KEYper AWS S3
Vedere Caricare dati usando COPY INTO con credenziali temporanee.
SELECT expression_listSeleziona le colonne o le espressioni specificate dai dati di origine prima di copiare nella tabella Delta. Le espressioni possono essere qualsiasi cosa tu usi con le istruzioni
SELECT, incluse le operazioni finestra. È possibile usare le espressioni di aggregazione solo per le aggregazioni globali. Non è possibileGROUP BYusare colonne con questa sintassi.FILEFORMAT = data_sourceFormato dei file di origine da caricare. Uno di
CSV,JSON,AVRO,ORC,PARQUET,TEXT,BINARYFILE.VALIDATESi applica a:
Databricks SQL
Databricks Runtime 10.4 LTS e versioni successiveI dati da caricare in una tabella vengono convalidati ma non scritti nella tabella. Queste convalide includono:
- Indica se i dati possono essere analizzati.
- Indica se lo schema corrisponde a quello della tabella o se lo schema deve essere evoluto.
- Se tutti i vincoli di nullità e di controllo vengono soddisfatti.
L'impostazione predefinita consiste nel convalidare tutti i dati da caricare. È possibile specificare una serie di righe da convalidare con la
ROWSparola chiave , ad esempioVALIDATE 15 ROWS. L'istruzioneCOPY INTOrestituisce un'anteprima dei dati di 50 righe o minore quando viene usato un numero minore di 50 con laROWSparola chiave .FILESElenco di nomi di file da caricare, con un limite di 1000 file. Non può essere specificato con
PATTERN.PATTERNModello GLOB che identifica i file da caricare dalla directory di origine. Non può essere specificato con
FILES.Modello Descrizione ?Corrisponde a qualsiasi carattere singolo *Corrisponde a zero o più caratteri [abc]Trova la corrispondenza di un singolo carattere del set di caratteri {a,b,c}. [a-z]Trova la corrispondenza di un singolo carattere dall'intervallo di caratteri {a... z}. [^a]Trova la corrispondenza di un singolo carattere non incluso nel set di caratteri o nell'intervallo {a}. Si noti che il ^carattere deve essere immediatamente a destra della parentesi aperta.{ab,cd}Abbina una stringa dall'insieme di stringhe {ab, cd}. {ab,c{de, fh}}Trova la corrispondenza di una stringa dall'insieme di stringhe {ab, cde, cfh}. FORMAT_OPTIONSOpzioni da passare al lettore dell'origine dati Apache Spark per il formato specificato. Vedere Opzioni di formato per ogni formato di file.
COPY_OPTIONSOpzioni per controllare l'operazione del
COPY INTOcomando.-
force: booleano, valore predefinitofalse. Se impostato sutrue, l'idempotenza è disabilitata e i file vengono caricati indipendentemente dal fatto che siano stati caricati prima. -
mergeSchema: booleano, valore predefinitofalse. Se impostato sutrue, lo schema può essere evoluto in base ai dati in ingresso.
-
Richiamare COPY INTO simultaneamente
COPY INTO supporta chiamate simultanee sulla stessa tabella. Ogni volta che COPY INTO viene richiamato simultaneamente su set distinti di file di input, ciascuna invocazione dovrebbe riuscire, altrimenti si verifica un conflitto di transazione.
COPY INTO non deve essere richiamato simultaneamente per migliorare le prestazioni; un singolo COPY INTO comando con più file offre in genere prestazioni migliori rispetto all'esecuzione di comandi simultanei COPY INTO con un singolo file ciascuno.
COPY INTO può essere chiamato simultaneamente quando:
- Molteplici produttori di dati non hanno un modo semplice per coordinarsi e non possono effettuare una singola chiamata.
- Una directory molto grande può essere incorporata una sottodirectory alla volta. Quando si inseriscono directory con un numero molto elevato di file, Databricks consiglia di usare il caricatore automatico quando possibile.
Accedere ai metadati dei file
Per informazioni su come accedere ai metadati per le origini dati basate su file, vedere Colonna metadati file.
Opzioni di formattazione
Per le opzioni specifiche per ogni formato di file (JSON, CSV, XML, Parquet, Avro, text, ORC e binary), vedere Opzioni DataFrameReader.