Daten importieren
Der erste Schritt bei der Nutzung eines Datenbanksystems ist das Einfügen von Daten. DuckDB kann sich direkt mit vielen gängigen Datenquellen verbinden und bietet mehrere Importverfahren, mit denen Sie die Datenbank einfach und effizient füllen können. Diese Seite gibt einen Überblick über die Verfahren, damit Sie das für Ihren Anwendungsfall passende wählen können.
INSERT-Anweisungen
INSERT-Anweisungen sind der Standardweg, Daten in ein Datenbanksystem zu laden. Sie eignen sich zum schnellen Prototyping, sollten aber für das Massenladen vermieden werden, da sie einen erheblichen Overhead pro Zeile haben.
INSERT INTO people VALUES (1, 'Mark');Eine ausführlichere Beschreibung finden Sie auf der Seite zur INSERT-Anweisung.
Dateien laden: Relative Pfade
Mit der Konfigurationsoption file_search_path legen Sie fest, gegenüber welchen „Wurzelverzeichnissen“ relative Pfade aufgelöst werden.
Ist file_search_path nicht gesetzt, dient das Arbeitsverzeichnis als Basis für relative Pfade.
Dateiformate
CSV laden
Daten können auf mehrere Arten effizient aus CSV-Dateien geladen werden. Am einfachsten ist die Angabe des Dateinamens:
SELECT * FROM 'test.csv';Alternativ die Funktion read_csv verwenden, um Optionen zu übergeben:
SELECT * FROM read_csv('test.csv', header = false);Oder die COPY-Anweisung verwenden:
COPY tbl FROM 'test.csv' (HEADER false);Daten können auch direkt aus komprimierten CSV-Dateien gelesen werden (z. B. mit gzip komprimiert):
SELECT * FROM 'test.csv.gz';DuckDB kann mit der Anweisung CREATE TABLE ... AS SELECT eine Tabelle aus den geladenen Daten erzeugen:
CREATE TABLE test AS SELECT * FROM 'test.csv';Weitere Details finden Sie auf der Seite zum CSV-Laden.
Parquet laden
Parquet-Dateien können effizient über ihren Dateinamen geladen und abgefragt werden:
SELECT * FROM 'test.parquet';Alternativ die Funktion read_parquet verwenden:
SELECT * FROM read_parquet('test.parquet');Oder die COPY-Anweisung verwenden:
COPY tbl FROM 'test.parquet';Weitere Details finden Sie auf der Seite zum Parquet-Laden.
JSON laden
JSON-Dateien können effizient über ihren Dateinamen geladen und abgefragt werden:
SELECT * FROM 'test.json';Alternativ die Funktion read_json verwenden:
SELECT * FROM read_json('test.json');Oder die COPY-Anweisung verwenden:
COPY tbl FROM 'test.json';Weitere Details finden Sie auf der Seite zum JSON-Laden.
Dateiname zurückgeben
Seit DuckDB v1.3.0 unterstützen die CSV-, JSON- und Parquet-Reader die virtuelle Spalte filename:
COPY (FROM (VALUES (42), (43)) t(x)) TO 'test.parquet';SELECT *, filename FROM 'test.parquet';Appender
In mehreren APIs (C, C++, Go, Java und Rust) kann der Appender als Alternative zum Massenladen verwendet werden. Diese Klasse ermöglicht es, Zeilen effizient ohne SQL-Anweisungen in das Datenbanksystem einzufügen.