COPY INTO

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Läser in data från en filplats till en Delta-tabell. Det här är en återförsöksbar och idempotent åtgärd. Filer på källplatsen som redan är inlästa utelämnas. Detta gäller även om filerna har ändrats sedan de lästes in. Exempel finns i Vanliga datainläsningsmönster med hjälp av COPY INTO.

Syntax

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) ] ) ]

Parametrar

  • target_table

    Identifierar en befintlig Delta-tabell. Target_table får inte innehålla någon specifikation för tidsmässiga specifikationer eller alternativ.

    Om tabellnamnet anges i form av en plats, till exempel: delta.`/path/to/table` , kan Unity Catalog styra åtkomsten till de platser som skrivs till. Du kan skriva till en extern plats genom att:

    • Definiera platsen som en extern plats och ha WRITE FILES behörighet på den externa platsen.
    • Har WRITE FILES behörighet för en namngiven lagringsuppgift som tillåter att skriva till en plats med hjälp av: COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)

    Mer information finns i Ansluta till molnobjektlagring med Unity Catalog .

  • BY POSITION | ( col_name [ , <col_name> ... ] )

    Jämför källkolumner med kolumner i måltabellen efter ordningsposition. Typgjutning av de matchade kolumnerna görs automatiskt.

    Den här parametern stöds endast för huvudlöst CSV-filformat. Du måste ange FILEFORMAT = CSV. FORMAT_OPTIONS måste också anges till ("headers" = "false") (FORMAT_OPTIONS ("headers" = "false") är standardvärdet).

    Syntaxalternativ 1: BY POSITION

    • Matchar ihop källkolumner med måltabellens kolumner efter ordningsposition automatiskt.
      • Standardnamnmatchningen används inte för jämförelse.
      • IDENTITY kolumner och GENERATED kolumner i måltabellen ignoreras när de matchar källkolumnerna.
      • Om antalet källkolumner inte är lika med de filtrerade måltabellkolumnerna COPY INTO genererar ett fel.

    Syntaxalternativ 2: ( col_name [ , <col_name> ... ] )

    • Matchar källkolumner med de angivna måltabellkolumnerna efter relativ ordningstalsposition med hjälp av en namnlista för måltabellkolumner inom parenteser, avgränsade med kommatecken.
      • Den ursprungliga tabellkolumnordningen och kolumnnamnen används inte för matchning.
      • IDENTITY kolumner och GENERATED kolumner kan inte anges i listan med kolumnnamn, annars COPY INTO uppstår ett fel.
      • Det går inte att duplicera de angivna kolumnerna.
      • När antalet källkolumner inte är lika med de angivna tabellkolumnerna uppstår COPY INTO ett fel.
      • För de kolumner som inte anges i kolumnnamnslistan tilldelar COPY INTO eventuella standardvärden, och tilldelar NULL annars. Om någon kolumn inte är nullbar uppstår COPY INTO ett fel.
  • source

    Filplatsen som data ska läsas in från. Filer på den här platsen måste ha det format som anges i FILEFORMAT. Platsen tillhandahålls i form av en URI.

    Åtkomst till källplatsen kan ges via:

    • credential_name

      Valfritt namn på de autentiseringsuppgifter som används för att komma åt eller skriva till lagringsplatsen. Du använder endast den här autentiseringsuppgiften om filplatsen inte ingår på en extern plats. Se credential_name.

    • Infogade tillfälliga autentiseringsuppgifter.

    • Definiera källplatsen som en extern plats och ha READ FILES behörigheter på den externa platsen via Unity Catalog.
    • Att använda en namngiven lagringsreferens med READ FILES behörigheter som tillåter läsning från en plats via Unity Catalog.

    Du behöver inte ange inbäddade eller namngivna autentiseringsuppgifter om platsen redan har definierats som en extern sökväg som du har behörighet att använda. Mer information finns i Översikt över externa platser .

    Kommentar

    Om källfilsökvägen är en rotsökväg lägger du till ett snedstreck (/) i slutet av filsökvägen, s3://my-bucket/till exempel .

    Godkända alternativ för autentiseringsuppgifter är:

    • AZURE_SAS_TOKEN för ADLS och Azure Blob Storage
    • AWS_ACCESS_KEY, AWS_SECRET_KEYoch AWS_SESSION_TOKEN för AWS S3

    Godkända krypteringsalternativ är:

    • TYPE = 'AWS_SSE_C', och MASTER_KEY för AWS S3

Se Ladda data med COPY INTO med tillfälliga inloggningsuppgifter.

  • SELECT expression_list

    Väljer de angivna kolumnerna eller uttrycken från källdata innan du kopierar till Delta-tabellen. Uttrycken kan vara allt du använder med SELECT -instruktioner, inklusive fönsteråtgärder. Du kan bara använda aggregeringsuttryck för globala aggregeringar. Du kan inte GROUP BY använda kolumner med den här syntaxen.

  • FILEFORMAT = data_source

    Formatet för källfilerna som ska läsas in. En av CSV, JSON, AVRO, ORC, PARQUET, TEXT, BINARYFILE.

  • VALIDATE

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 10.4 LTS och senare

    De data som ska läsas in i en tabell verifieras men skrivs inte till tabellen. Dessa valideringar omfattar:

    • Om data kan parsas.
    • Om schemat matchar tabellens eller om schemat behöver utvecklas.
    • Om alla null- och kontrollvillkor är uppfyllda.

    Standardvärdet är att verifiera alla data som ska läsas in. Du kan ange ett antal rader som ska verifieras med nyckelordet ROWS , till exempel VALIDATE 15 ROWS. Instruktionen COPY INTO returnerar en förhandsgranskning av data på 50 rader eller mindre när ett antal mindre än 50 används med nyckelordet ROWS ).

  • FILES

    En lista över filnamn som ska läsas in med en gräns på 1 000 filer. Det går inte att ange med PATTERN.

  • PATTERN

    Ett globmönster som identifierar de filer som ska läsas in från källkatalogen. Det går inte att ange med FILES.

    Mönster beskrivning
    ? Matchar ett enskilt tecken
    * Matchar noll eller fler tecken
    [abc] Matchar ett enskilt tecken från teckenuppsättningen {a,b,c}.
    [a-z] Matchar ett enskilt tecken från teckenområdet {a... z}.
    [^a] Matchar ett enskilt tecken som inte kommer från teckenuppsättningen eller intervallet {a}. Observera att ^ tecken måste förekomma omedelbart till höger om den inledande hakparentesen.
    {ab,cd} Matchar en sträng från stränguppsättningen {ab, cd}.
    {ab,c{de, fh}} Matchar en sträng från stränguppsättningen {ab, cde, cfh}.
  • FORMAT_OPTIONS

    Alternativ som ska skickas till Apache Spark-datakällans läsare för det angivna formatet. Se Formatalternativ för varje filformat.

  • COPY_OPTIONS

    Alternativ för att styra kommandots COPY INTO funktion.

    • force: boolesk, standardvärde false. Om värdet trueär inaktiverat inaktiveras idempotens och filer läses in oavsett om de har lästs in tidigare.
    • mergeSchema: boolesk, standardvärde false. Om det är inställt på truekan schemat utvecklas enligt inkommande data.

Anropa COPY INTO samtidigt

COPY INTO stöder samtidiga anrop mot samma tabell. Så länge som COPY INTO anropas samtidigt på distinkta uppsättningar med indatafiler bör varje anrop så småningom lyckas, annars får du en transaktionskonflikt. COPY INTO bör inte anropas samtidigt för att förbättra prestandan. ett enda COPY INTO kommando med flera filer presterar vanligtvis bättre än att köra samtidiga COPY INTO kommandon med en enda fil vardera. COPY INTO kan anropas samtidigt när:

  • Flera dataproducenter har inte ett enkelt sätt att samordna och kan inte göra ett enda anrop.
  • När en mycket stor katalog kan bearbetas del för del, underkatalog för underkatalog. När du matar in kataloger med ett mycket stort antal filer rekommenderar Databricks att du använder Auto Loader när det är möjligt.

Komma åt filens metadata

Information om hur du kommer åt metadata för filbaserade datakällor finns i kolumnen Filmetadata.

Formatalternativ

Alternativ som är specifika för varje filformat (JSON, CSV, XML, Parquet, Avro, text, ORC och binär fil) finns i DataFrameReader-alternativ.