COPY INTO

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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_table

    Identifica 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 FILES su quella posizione esterna.
    • Avere WRITE FILES autorizzazioni 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 .

  • 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_OPTIONS deve 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.
      • IDENTITY colonne e GENERATED colonne 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 INTO genera 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.
      • IDENTITY colonne e GENERATED colonne non possono essere specificate nell'elenco dei nomi di colonne, altrimenti COPY INTO genera un errore.
      • Impossibile duplicare le colonne specificate.
      • Quando il numero di colonne di origine non è uguale alle colonne della tabella specificate, COPY INTO genera un errore.
      • Per le colonne non specificate nell'elenco dei nomi di colonna, COPY INTO assegna i valori predefiniti, se presenti, e assegna in NULL caso contrario. Se una colonna non è nullable, COPY INTO genera un errore.
  • source

    Percorso 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_name

      Nome 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 FILES sull'ubicazione esterna attraverso il Catalogo Unity.
    • Utilizzo di una credenziale di archiviazione denominata con autorizzazioni READ FILES che 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_TOKEN per ADLS e Archiviazione Blob di Azure
    • AWS_ACCESS_KEY, AWS_SECRET_KEY, e AWS_SESSION_TOKEN per AWS S3

    Le opzioni di crittografia accettate sono:

    • TYPE = 'AWS_SSE_C', e MASTER_KEY per AWS S3

Vedere Caricare dati usando COPY INTO con credenziali temporanee.

  • SELECT expression_list

    Seleziona 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 è possibile GROUP BY usare colonne con questa sintassi.

  • FILEFORMAT = data_source

    Formato dei file di origine da caricare. Uno di CSV, JSON, AVRO, ORC, PARQUET, TEXT, BINARYFILE.

  • VALIDATE

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 10.4 LTS e versioni successive

    I 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 ROWS parola chiave , ad esempio VALIDATE 15 ROWS. L'istruzione COPY INTO restituisce un'anteprima dei dati di 50 righe o minore quando viene usato un numero minore di 50 con la ROWS parola chiave .

  • FILES

    Elenco di nomi di file da caricare, con un limite di 1000 file. Non può essere specificato con PATTERN.

  • PATTERN

    Modello 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_OPTIONS

    Opzioni da passare al lettore dell'origine dati Apache Spark per il formato specificato. Vedere Opzioni di formato per ogni formato di file.

  • COPY_OPTIONS

    Opzioni per controllare l'operazione del COPY INTO comando.

    • force: booleano, valore predefinito false. Se impostato su true, l'idempotenza è disabilitata e i file vengono caricati indipendentemente dal fatto che siano stati caricati prima.
    • mergeSchema: booleano, valore predefinito false. Se impostato su true, 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.