Parquet-Import
Um Daten aus einer Parquet-Datei zu lesen, verwenden Sie die Funktion read_parquet in der FROM-Klausel einer Abfrage:
SELECT * FROM read_parquet('input.parquet');Alternativ können Sie die Funktion read_parquet weglassen und DuckDB sie anhand der Dateiendung ableiten lassen:
SELECT * FROM 'input.parquet';Um mit dem Ergebnis einer Abfrage eine neue Tabelle anzulegen, verwenden Sie die Anweisung CREATE TABLE ... AS SELECT:
CREATE TABLE new_tbl AS SELECT * FROM read_parquet('input.parquet');Um Daten aus einer Abfrage in eine vorhandene Tabelle zu laden, verwenden Sie INSERT INTO mit einer SELECT-Anweisung:
INSERT INTO tbl SELECT * FROM read_parquet('input.parquet');Alternativ verwenden Sie die Anweisung COPY, um Daten aus einer Parquet-Datei in eine vorhandene Tabelle zu laden:
COPY tbl FROM 'input.parquet' (FORMAT parquet);Schema zur Laufzeit anpassen
Sie können eine Parquet-Datei mit folgendem Trick in ein leicht abweichendes Schema laden (z. B. andere Spaltenanzahl, lockerere Typen).
Angenommen, Sie haben eine Parquet-Datei mit zwei Spalten, c1 und c2:
COPY (FROM (VALUES (42, 43)) t(c1, c2))TO 'f.parquet';Um eine weitere Spalte c3 hinzuzufügen, die in der Datei nicht vorhanden ist, führen Sie aus:
FROM (VALUES (NULL::VARCHAR, NULL, NULL)) t(c1, c2, c3)WHERE falseUNION ALL BY NAMEFROM 'f.parquet';Die erste FROM-Klausel erzeugt eine leere Tabelle mit drei Spalten, wobei c1 ein VARCHAR ist.
Anschließend vereinen Sie die Parquet-Datei mit UNION ALL BY NAME. Das Ergebnis ist:
┌─────────┬───────┬───────┐│ c1 │ c2 │ c3 ││ varchar │ int32 │ int32 │├─────────┼───────┼───────┤│ 42 │ 43 │ NULL │└─────────┴───────┴───────┘Weitere Optionen finden Sie in der Parquet-Lade-Referenz.