COPY INTO

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Lädt Daten aus einem Dateispeicherort in eine Delta-Tabelle. Hierbei handelt es sich um einen wiederholbaren und idempotenten Vorgang: Dateien am Quellspeicherort, die bereits geladen wurden, werden übersprungen. Dies gilt auch dann, wenn die Dateien seit dem Laden geändert wurden. Beispiele finden Sie unter Allgemeine Datenlademuster mit 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) ] ) ]

Parameter

  • target_table

    Identifiziert eine vorhandene Delta-Tabelle. Die target_table darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

    Wenn der Tabellenname in Form eines Speicherorts bereitgestellt wird, so wie: delta.`/path/to/table` , Unity Catalog kann den Zugriff auf die Speicherorte steuern, in die geschrieben wird. Sie können an einen externen Speicherort schreiben, indem Sie:

    • Den Speicherorts als externer Speicherort und WRITE FILES-Berechtigungen für diesen externen Speicherort definieren.
    • Mit WRITE FILES-Berechtigungen für eine benannte Speicheranmeldeinformationen, die die Autorisierung zum Schreiben an einen verwendeten Speicherort bereitstellen: COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)

    Weitere Informationen finden Sie unter Verbinden mit Cloud-Objektspeicher mithilfe des Unity-Katalogs.

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

    Vergleicht Quellspalten mit Zieltabellenspalten nach Ordnungsposition. Die Typumwandlung der übereinstimmenden Spalten erfolgt automatisch.

    Dieser Parameter wird nur für das CSV-Dateiformat ohne Kopfzeile unterstützt. Sie müssen FILEFORMAT = CSV angeben. FORMAT_OPTIONS muss ebenfalls auf ("headers" = "false") festgelegt werden (FORMAT_OPTIONS ("headers" = "false") ist die Standardeinstellung).

    Syntaxoption 1: BY POSITION

    • Vergleicht automatisch Quellspalten mit Zieltabellenspalten nach Ordnungsposition.
      • Der Standardnamensabgleich wird nicht für den Abgleich verwendet.
      • Die Spalten IDENTITY und GENERATED der Zieltabelle werden beim Abgleich der Quellspalten ignoriert.
      • Wenn die Anzahl der Quellspalten nicht mit den gefilterten Zieltabellenspalten übereinstimmt, löst COPY INTO einen Fehler aus.

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

    • Vergleicht Quellspalten mit den angegebenen Zieltabellenspalten nach relativer Ordnungsposition mithilfe einer Liste mit Namen der Zieltabellenspalten in Klammern, getrennt durch Komma.
      • Die ursprüngliche Tabellenspaltenreihenfolge und Spaltennamen werden nicht für den Abgleich verwendet.
      • Die Spalten IDENTITY und GENERATED können nicht in der Spaltennamensliste angegeben werden, andernfalls löst COPY INTO einen Fehler aus.
      • Die angegebenen Spalten können nicht dupliziert werden.
      • Wenn die Anzahl der Quellspalten nicht den angegebenen Tabellenspalten entspricht, COPY INTO wird ein Fehler ausgelöst.
      • Für die Spalten, die in der Spaltennamensliste nicht angegeben sind, weist COPY INTO ggf. Standardwerte und andernfalls NULL zu. Wenn für eine Spalte keine Nullwerte zulässig sind, löst COPY INTO einen Fehler aus.
  • source

    Der Dateispeicherort, aus dem die Daten geladen werden sollen. Dateien an diesem Speicherort müssen das in FILEFORMAT angegebene Format aufweisen. Der Speicherort wird in Form einer URI angeboten.

    Der Zugriff auf den Quellspeicherort kann über Folgendes bereitgestellt werden:

    • credential_name

      Optionaler Name der Anmeldeinformationen, die für den Zugriff auf oder das Schreiben in den Speicherort verwendet werden. Sie verwenden diese Anmeldeinformationen nur, wenn der Dateispeicherort nicht in einem externen Speicherort enthalten ist. Weitere Informationen finden Sie unter credential_name.

    • Temporäre Inline-Anmeldeinformationen.

    • Definieren des Quellspeicherorts als externer Speicherort und Berechtigungen von READ FILES für den externen Speicherort über Unity Catalog.
    • Verwenden sie eine benannte Speicheranmeldeinformationen mit READ FILES-Berechtigungen, die die Autorisierung zum Lesen von einem Speicherort über den Unity Catalog bereitstellen.

    Sie müssen keine Inline- oder benannten Anmeldeinformationen angeben, wenn der Pfad bereits als externer Speicherort definiert ist, für den Sie Berechtigungen zur Nutzung haben. Weitere Informationen finden Sie unter "Übersicht über externe Speicherorte ".

    Hinweis

    Wenn der Quelldateipfad ein Stammpfad ist, müssen Sie am Ende des Dateipfads einen Schrägstrich (/) hinzufügen, z. B s3://my-bucket/.

    Folgende Optionen für Anmeldeinformation werden akzeptiert:

    • AZURE_SAS_TOKEN für ADLS und Azure Blob Storage
    • AWS_ACCESS_KEY, AWS_SECRET_KEY und AWS_SESSION_TOKEN für AWS S3

    Folgende Verschlüsselungsoptionen werden akzeptiert:

    • TYPE = 'AWS_SSE_C' und MASTER_KEY für AWS S3

Siehe Laden von Daten mithilfe von COPY INTO mit temporären Anmeldeinformationen.

  • SELECT expression_list

    Wählt die angegebenen Spalten oder Ausdrücke in den Quelldaten vor dem Kopieren in die Delta-Tabelle aus. Die Ausdrücke können beliebige Ausdrücke sein, die Sie mit SELECT-Anweisungen verwenden (einschließlich Fenstervorgänge). Sie können Aggregationsausdrücke nur für globale Aggregate verwenden. Sie können mit dieser Syntax nicht GROUP BY für Spalten verwenden.

  • FILEFORMAT = data_source

    Das Format der zu ladenden Quelldateien. Gültig sind folgende Formate: CSV, JSON, AVRO, ORC, PARQUET, TEXT, BINARYFILE.

  • VALIDATE

    Gilt für:Häkchen ja Databricks SQL Häkchen Databricks Runtime 10.4 LTS und höher

    Die Daten, die in eine Tabelle geladen werden sollen, werden überprüft, aber nicht in die Tabelle geschrieben. Diese Validierungen umfassen:

    • Ob die Daten analysiert werden können
    • Ob das Schema dem der Tabelle entspricht oder ob das Schema weiterentwickelt werden muss
    • Ob alle NULL-Zulässigkeits- und Überprüfungs-Einschränkungen erfüllt sind.

    Standardmäßig werden alle Daten überprüft, die geladen werden sollen. Sie können eine Anzahl von Zeilen angeben, die mit dem ROWS-Schlüsselwort überprüft werden sollen, z. B. VALIDATE 15 ROWS. Die COPY INTO-Anweisung gibt eine Vorschau der Daten aus 50 Zeilen oder weniger zurück, wenn eine kleinere Zahl als 50 mit dem ROWS-Schlüsselwort verwendet wird.

  • FILES

    Eine Liste der zu ladenden Dateinamen mit einem Limit von 1000 Dateien. Kann nicht mit PATTERN angegeben werden.

  • PATTERN

    Ein Glob-Muster, das die Dateien identifiziert, die aus dem Quellverzeichnis geladen werden sollen. Kann nicht mit FILES angegeben werden.

    Muster BESCHREIBUNG
    ? Führt einen Abgleich für ein einzelnes Zeichen durch
    * Entspricht null oder mehr Zeichen
    [abc] Entspricht einem einzelnen Zeichen aus dem Zeichensatz {a,b,c}.
    [a-z] Entspricht einem einzelnen Zeichen aus dem Zeichenbereich {a... z}.
    [^a] Entspricht einem einzelnen Zeichen, das nicht aus dem Zeichensatz oder Bereich {a} stammt. Beachten Sie, dass das Zeichen ^ sofort rechts neben der öffnenden Klammer auftreten muss.
    {ab,cd} Entspricht einer Zeichenfolge aus dem Zeichenfolgensatz {ab, cd}.
    {ab,c{de, fh}} Entspricht einer Zeichenfolge aus dem Zeichenfolgensatz {ab, cde, cfh}.
  • FORMAT_OPTIONS

    Optionen, die an den Apache Spark-Datenquellenleser für das angegebene Format übergeben werden sollen. Weitere Informationen zu den einzelnen Dateiformaten finden Sie unter Formatoptionen.

  • COPY_OPTIONS

    Optionen zum Steuern der Funktionsweise des COPY INTO-Befehls.

    • force: boolescher Wert, Standardwert false. Bei Festlegung auf true, ist idempotency deaktiviert und Dateien werden unabhängig davon geladen, ob sie zuvor geladen wurden.
    • mergeSchema: boolescher Wert, Standardwert false. Bei Festlegung auf true kann das Schema den eingehenden Daten entsprechend weiterentwickelt werden.

Gleichzeitiges Aufrufen von COPY INTO

COPY INTO unterstützt gleichzeitige Aufrufe für dieselbe Tabelle. Solange COPY INTO gleichzeitig für verschiedene Gruppen von Eingabedateien aufgerufen wird, sollte jeder Aufruf letztendlich erfolgreich sein, andernfalls kommt es zu einem Transaktionskonflikt. COPY INTO sollte nicht gleichzeitig aufgerufen werden, um die Leistung zu verbessern. Ein einzelner COPY INTO-Befehl mit mehreren Dateien ist in der Regel leistungsfähiger als das Ausführen gleichzeitiger COPY INTO-Befehle mit jeweils einer einzelnen Datei. COPY INTO kann gleichzeitig aufgerufen werden, wenn:

  • Mehrere Datenproduzenten haben keine einfache Möglichkeit, sich zu koordinieren und können keinen einzigen Aufruf durchführen.
  • Wenn ein sehr großes Verzeichnis Unterverzeichnis für Unterverzeichnis erfasst werden kann. Bei der Erfassung von Verzeichnissen mit einer sehr großen Anzahl von Dateien empfiehlt Databricks, nach Möglichkeit Auto Loader zu verwenden.

Zugreifen auf Dateimetadaten

Informationen zum Zugreifen auf Metadaten für dateibasierte Datenquellen finden Sie unter der Spalte „Dateimetadaten“.

Formatoptionen

Optionen speziell für jedes Dateiformat (JSON, CSV, XML, Parkett, Avro, Text, ORC und Binärdatei) finden Sie unter DataFrameReader-Optionen.