Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
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_tableIdentifiziert 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.
- Den Speicherorts als externer Speicherort und
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 = CSVangeben.FORMAT_OPTIONSmuss 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
IDENTITYundGENERATEDder Zieltabelle werden beim Abgleich der Quellspalten ignoriert. - Wenn die Anzahl der Quellspalten nicht mit den gefilterten Zieltabellenspalten übereinstimmt, löst
COPY INTOeinen 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
IDENTITYundGENERATEDkönnen nicht in der Spaltennamensliste angegeben werden, andernfalls löstCOPY INTOeinen Fehler aus. - Die angegebenen Spalten können nicht dupliziert werden.
- Wenn die Anzahl der Quellspalten nicht den angegebenen Tabellenspalten entspricht,
COPY INTOwird ein Fehler ausgelöst. - Für die Spalten, die in der Spaltennamensliste nicht angegeben sind, weist
COPY INTOggf. Standardwerte und andernfallsNULLzu. Wenn für eine Spalte keine Nullwerte zulässig sind, löstCOPY INTOeinen Fehler aus.
- Vergleicht automatisch Quellspalten mit Zieltabellenspalten nach Ordnungsposition.
sourceDer Dateispeicherort, aus dem die Daten geladen werden sollen. Dateien an diesem Speicherort müssen das in
FILEFORMATangegebene Format aufweisen. Der Speicherort wird in Form einer URI angeboten.Der Zugriff auf den Quellspeicherort kann über Folgendes bereitgestellt werden:
credential_nameOptionaler 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 FILESfü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. Bs3://my-bucket/.Folgende Optionen für Anmeldeinformation werden akzeptiert:
-
AZURE_SAS_TOKENfür ADLS und Azure Blob Storage -
AWS_ACCESS_KEY,AWS_SECRET_KEYundAWS_SESSION_TOKENfür AWS S3
Folgende Verschlüsselungsoptionen werden akzeptiert:
-
TYPE = 'AWS_SSE_C'undMASTER_KEYfür AWS S3
Siehe Laden von Daten mithilfe von COPY INTO mit temporären Anmeldeinformationen.
SELECT expression_listWä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 nichtGROUP BYfür Spalten verwenden.FILEFORMAT = data_sourceDas Format der zu ladenden Quelldateien. Gültig sind folgende Formate:
CSV,JSON,AVRO,ORC,PARQUET,TEXT,BINARYFILE.VALIDATEGilt für:
Databricks SQL
Databricks Runtime 10.4 LTS und höherDie 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. DieCOPY INTO-Anweisung gibt eine Vorschau der Daten aus 50 Zeilen oder weniger zurück, wenn eine kleinere Zahl als 50 mit demROWS-Schlüsselwort verwendet wird.FILESEine Liste der zu ladenden Dateinamen mit einem Limit von 1000 Dateien. Kann nicht mit
PATTERNangegeben werden.PATTERNEin Glob-Muster, das die Dateien identifiziert, die aus dem Quellverzeichnis geladen werden sollen. Kann nicht mit
FILESangegeben 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_OPTIONSOptionen, 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_OPTIONSOptionen zum Steuern der Funktionsweise des
COPY INTO-Befehls.-
force: boolescher Wert, Standardwertfalse. Bei Festlegung auftrue, ist idempotency deaktiviert und Dateien werden unabhängig davon geladen, ob sie zuvor geladen wurden. -
mergeSchema: boolescher Wert, Standardwertfalse. Bei Festlegung auftruekann 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.