COPY INTO

Platí pro:ano, zaškrtnuto Databricks SQL ano, zaškrtnuto Databricks Runtime

Načte data ze specifikovaného umístění souboru do tabulky Delta. Jedná se o opakovatelnou a idempotentní operaci. Soubory ve zdrojovém umístění, které již byly načteny, se přeskočí. To platí i v případě, že byly soubory od jejich načtení změněny. Příklady naleznete v části běžné vzory načítání dat pomocí COPY INTO.

Syntaxe

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

Parametry

  • target_table

    Identifikuje existující tabulku Delta. Tabulka target_table nesmí obsahovat ani časovou specifikaci ani specifikaci možností.

    Pokud je název tabulky zadaný ve formě umístění, například delta.`/path/to/table` , Katalog Unity může řídit přístup k umístěním, do kterých se zapisuje. Do externího umístění můžete zapisovat pomocí:

    • Definujte umístění jako externí umístění a mít WRITE FILES oprávnění k tomu externímu umístění.
    • Mít oprávnění WRITE FILES k pojmenovanému přístupovému údaji úložiště pro poskytnutí autorizace k zápisu do umístění pomocí: COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)

    Další podrobnosti najdete v tématu Připojení ke cloudovému úložišti objektů pomocí katalogu Unity .

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

    Porovná zdrojové sloupce s cílovými sloupci tabulky podle řadové pozice. Typová konverze u odpovídajících sloupců se provádí automaticky.

    Tento parametr je podporován pouze pro formát souboru CSV bez záhlaví. Je nutné zadat FILEFORMAT = CSV. FORMAT_OPTIONS musí být také nastavena na ("headers" = "false") (FORMAT_OPTIONS ("headers" = "false") je výchozí).

    Možnost syntaxe 1: BY POSITION

    • Porovná zdrojové sloupce s cílovými sloupci tabulky podle pořadí automaticky.
      • Pro porovnávání se nepoužívá výchozí shoda názvů.
      • IDENTITY sloupce a GENERATED sloupce cílové tabulky se při porovnávání zdrojových sloupců ignorují.
      • Pokud se počet zdrojových sloupců nerovná filtrovaným cílovým sloupcům tabulky, COPY INTO vyvolá chybu.

    Možnost syntaxe 2: ( col_name [ , <col_name> ... ] )

    • Porovná zdrojové sloupce se zadanými cílovými sloupci tabulky podle relativního pořadového umístění pomocí seznamu názvů cílových sloupců tabulky v závorkách oddělených čárkami.
      • Původní pořadí sloupců tabulky a názvy sloupců se pro porovnávání nepoužívají.
      • IDENTITY sloupce a GENERATED sloupce nelze zadat v seznamu názvů sloupců, jinak COPY INTO vyvolá chybu.
      • Zadané sloupce nelze duplikovat.
      • Pokud se počet zdrojových sloupců nerovná zadaným sloupcům tabulky, COPY INTO vyvolá chybu.
      • Pro sloupce, které nejsou zadány v seznamu názvů sloupců, COPY INTO přiřadí výchozí hodnoty, pokud existují, a přiřadí NULL jinak. Pokud některý sloupec nemá hodnotu null, COPY INTO vyvolá chybu.
  • source

    Umístění souboru, ze které se mají načíst data. Soubory v tomto umístění musí mít formát zadaný v FILEFORMAT. Umístění je k dispozici ve formě identifikátoru URI.

    Přístup ke zdrojovému umístění lze poskytnout prostřednictvím:

    • credential_name

      Volitelný název přihlašovacích údajů, které se používají pro přístup k úložnému umístění nebo pro zápis do něj. Tyto přihlašovací údaje použijete jenom v případě, že umístění souboru není součástí externího umístění. Viz credential_name.

    • Vložené dočasné přihlašovací údaje.

    • Definování zdrojového umístění jako externího umístění a mít oprávnění READ FILES k externímu umístění prostřednictvím Unity Catalogu.
    • Použití pojmenovaných přihlašovacích údajů k úložišti s oprávněními READ FILES, která poskytují autorizaci ke čtení z umístění prostřednictvím katalogu Unity.

    Pokud je cesta už definovaná jako externí umístění, které máte oprávnění používat, nemusíte zadávat vložené ani pojmenované přihlašovací údaje. Další podrobnosti najdete v přehledu externích umístění .

    Poznámka:

    Pokud je cesta ke zdrojovému souboru kořenovou cestou, přidejte lomítko (/) na konec cesty k souboru, s3://my-bucket/například .

    Mezi akceptované možnosti přihlašovacích údajů patří:

    • AZURE_SAS_TOKEN pro ADLS a úložiště Azure Blob
    • AWS_ACCESS_KEY, AWS_SECRET_KEYa AWS_SESSION_TOKEN pro AWS S3

    Akceptované možnosti šifrování jsou:

    • TYPE = 'AWS_SSE_C' a MASTER_KEY pro AWS S3

Viz Načtení dat pomocí COPY INTO s dočasnými přihlašovacími údaji.

  • SELECT expression_list

    Před zkopírováním do tabulky Delta vybere zadané sloupce nebo výrazy ze zdrojových dat. Výrazy mohou být cokoliv, co používáte s výrazy SELECT, včetně operací s okny. Agregační výrazy můžete použít pouze pro globální agregace – u sloupců s touto syntaxí se nedá GROUP BY použít.

  • FILEFORMAT = data_source

    Formát zdrojových souborů, které se mají načíst. Jeden z CSV, JSON, AVRO, ORC, PARQUET, TEXT, BINARYFILE.

  • VALIDATE

    Platí pro:zaškrtnuto ano Databricks SQL zaškrtnuto ano Databricks Runtime 10.4 LTS a vyšší

    Data, která se mají načíst do tabulky, se ověřují, ale nezapisují se do tabulky. Mezi tato ověření patří:

    • Určuje, jestli se data dají analyzovat.
    • Ať už schéma odpovídá tabulce, nebo jestli je potřeba schéma vyvíjet.
    • Zda jsou splněna všechna omezení nullovosti a kontrolní podmínky.

    Výchozí možností je ověřit všechna data, která se mají načíst. Pomocí klíčového ROWS slova můžete zadat několik řádků, které se mají ověřit, například VALIDATE 15 ROWS. Příkaz COPY INTO vrátí náhled dat o 50 řádcích nebo méně, pokud se s klíčovým slovem ROWS použije číslo menší než 50).

  • FILES

    Seznam názvů souborů, které se mají načíst, s limitem 1 000 souborů. Nelze zadat pomocí parametru PATTERN.

  • PATTERN

    Vzor globu, který identifikuje soubory, které se mají načíst ze zdrojového adresáře. Nelze zadat pomocí parametru FILES.

    Vzor Popis
    ? Odpovídá jakémukoli jednomu znaku.
    * Odpovídá nule nebo více znaků
    [abc] Odpovídá jednomu znaku ze znakové sady {a,b,c}.
    [a-z] Odpovídá jednomu znaku z rozsahu znaků {a... z}.
    [^a] Odpovídá jednomu znaku, který není ze znakové sady nebo rozsahu {a}. Všimněte si, že ^ znak musí nastat okamžitě napravo od levé závorky.
    {ab,cd} Odpovídá řetězci ze sady řetězců {ab, cd}.
    {ab,c{de, fh}} Odpovídá řetězci ze sady řetězců {ab, cde, cfh}.
  • FORMAT_OPTIONS

    Možnosti, které se mají předat čtenáři zdroje dat Apache Sparku pro zadaný formát Viz Možnosti formátování pro každý formát souboru.

  • COPY_OPTIONS

    Možnosti řízení operace COPY INTO příkazu

    • force: logická hodnota, výchozí false. Pokud je nastavená hodnota true, idempotence je zakázaná a soubory se načtou bez ohledu na to, jestli byly načteny dříve.
    • mergeSchema: logická hodnota, výchozí false. Pokud je nastavená hodnota true, schéma se může vyvíjet podle příchozích dat.

Vyvolejte souběžně COPY INTO

COPY INTO podporuje souběžné vyvolání ve stejné tabulce. COPY INTO Pokud je vyvolána souběžně u různých sad vstupních souborů, každé vyvolání by nakonec mělo proběhnout úspěšně, jinak dojde ke konfliktu transakcí. COPY INTO by nemělo být vyvoláno souběžně za účelem zlepšení výkonu; Jeden COPY INTO příkaz s více soubory obvykle funguje lépe než spouštění souběžných COPY INTO příkazů s jedním souborem. COPY INTO lze volat souběžně, pokud:

  • Několik výrobců dat nemá snadný způsob, jak koordinovat a nemůže provést jediné vyvolání.
  • Když lze velmi velký adresář zpracovat po částech podle podadresářů. Při ingestování adresářů s velkým počtem souborů doporučuje Databricks používat Auto Loader, pokud je to možné.

Přístupová metadata souborů

Informace o přístupu k metadatům pro souborové zdroje dat najdete ve sloupci Metadata souboru.

Možnosti formátu

Možnosti specifické pro každý formát souboru (JSON, CSV, XML, Parquet, Avro, text, ORC a binární soubor) najdete v tématu Možnosti DataFrameReader.