Zum Inhalt springen

Erweiterungen

DuckDB hat einen flexiblen Erweiterungsmechanismus, mit dem Erweiterungen dynamisch geladen werden können. Erweiterungen können die Funktionalität von DuckDB erweitern, indem sie zusätzliche Dateiformate unterstützen, neue Typen einführen und domänenspezifische Funktionen bereitstellen.

Erweiterungen sind auf allen Clients ladbar (z. B. Python und R). Über die Repositories Core und Community verteilte Erweiterungen werden unter macOS, Windows und Linux gebaut und getestet. Alle Betriebssysteme werden sowohl für die Architektur AMD64 als auch für ARM64 unterstützt.

Erweiterungen auflisten

Um eine Liste der Erweiterungen zu erhalten, verwenden Sie die Funktion duckdb_extensions:

SELECT extension_name, installed, description
FROM duckdb_extensions();
extension_name installed description
arrow false A zero-copy data integration between Apache Arrow and DuckDB
autocomplete false Adds support for autocomplete in the shell

Diese Liste zeigt, welche Erweiterungen verfügbar sind, welche installiert sind, in welcher Version, wo sie installiert sind, und mehr. Die Liste enthält die meisten, aber nicht alle verfügbaren Core-Erweiterungen. Die vollständige Liste pflegen wir als Liste der Core-Erweiterungen.

Tip Wir stellen einen Endpunkt bereit, der wöchentliche Download-Statistiken für Erweiterungen als JSON-Dateien liefert: Core-Erweiterungen und Community-Erweiterungen.

Eingebaute Erweiterungen

Die Binärdistribution von DuckDB enthält standardmäßig einige eingebaute Erweiterungen. Sie sind statisch in die Binärdatei eingebunden und können direkt verwendet werden. Um beispielsweise die eingebaute json-Erweiterung zum Lesen einer JSON-Datei zu verwenden:

SELECT *
FROM 'test.json';

Damit die DuckDB-Distribution schlank bleibt, sind nur wenige wesentliche Erweiterungen eingebaut; das variiert leicht je nach Distribution. Welche Erweiterung auf welcher Plattform eingebaut ist, ist in der Liste der Core-Erweiterungen dokumentiert.

Weitere Erweiterungen installieren

Damit eine nicht eingebaute Erweiterung in DuckDB verfügbar wird, sind zwei Schritte nötig:

  1. Installation der Erweiterung ist der Vorgang, bei dem die Erweiterungsbinärdatei heruntergeladen und ihre Metadaten geprüft werden. Bei der Installation speichert DuckDB die heruntergeladene Erweiterung und einige Metadaten in einem lokalen Verzeichnis. Aus diesem Verzeichnis kann DuckDB die Erweiterung anschließend laden, wann immer sie benötigt wird. Die Installation muss daher nur einmal erfolgen.

  2. Laden der Erweiterung ist der Vorgang, bei dem die Binärdatei dynamisch in eine DuckDB-Instanz geladen wird. DuckDB durchsucht das lokale Erweiterungsverzeichnis nach der installierten Erweiterung und lädt sie, um ihre Funktionen bereitzustellen. Das bedeutet, dass nach jedem Neustart von DuckDB alle verwendeten Erweiterungen (erneut) geladen werden müssen

Installation und Laden von Erweiterungen unterliegen einigen Einschränkungen.

Es gibt zwei Hauptwege, DuckDB die Schritte Installation und Laden für eine installierbare Erweiterung ausführen zu lassen: explizit und durch Autoloading.

Explizites INSTALL und LOAD

In DuckDB können Erweiterungen auch ausdrücklich installiert und geladen werden. Sowohl nicht automatisch ladbare als auch automatisch ladbare Erweiterungen können auf diese Weise installiert werden. Zum ausdrücklichen Installieren und Laden einer Erweiterung stellt DuckDB die SQL-Anweisungen LOAD und INSTALL bereit. Um beispielsweise die spatial-Erweiterung zu installieren und zu laden, führen Sie aus:

INSTALL spatial;
LOAD spatial;

Mit diesen Anweisungen stellt DuckDB sicher, dass die Erweiterung spatial installiert ist (die Anweisung INSTALL wird ignoriert, wenn sie bereits installiert ist), und fährt dann mit LOAD der Spatial-Erweiterung fort (wiederum wird die Anweisung ignoriert, wenn sie bereits geladen ist).

Erweiterungs-Repository

Optional kann ein Repository angegeben werden, aus dem die Erweiterung installiert werden soll, indem FROM ⟨repository⟩{:.language-sql .highlight} an den Befehl INSTALL / FORCE INSTALL angehängt wird. Dieses Repository kann entweder ein Alias sein, etwa community, oder eine direkte URL als einfach gequotete Zeichenkette.

Nach dem Installieren/Laden einer Erweiterung kann die Funktion duckdb_extensions verwendet werden, um weitere Informationen zu erhalten.

Autoloading von Erweiterungen

Für viele Core-Erweiterungen von DuckDB ist das ausdrückliche Laden und Installieren nicht nötig. DuckDB enthält einen Autoloading-Mechanismus, der die Core-Erweiterungen installiert und lädt, sobald sie in einer Abfrage verwendet werden. Wenn Sie beispielsweise ausführen:

SELECT *
FROM 'https://raw.githubusercontent.com/duckdb/duckdb-web/main/data/weather.csv';

installiert und lädt DuckDB automatisch die Erweiterung httpfs. Es sind keine ausdrücklichen Anweisungen INSTALL oder LOAD erforderlich.

Nicht alle Erweiterungen können automatisch geladen werden. Das kann verschiedene Gründe haben: Manche Erweiterungen nehmen mehrere Änderungen an der laufenden DuckDB-Instanz vor, sodass Autoloading technisch (noch) nicht möglich ist. Bei anderen ist es bevorzugt, dass Nutzer die Erweiterung vor der Verwendung ausdrücklich aktivieren, weil sie das Verhalten von DuckDB verändern.

Welche Erweiterungen automatisch geladen werden können, entnehmen Sie der Liste der Core-Erweiterungen.

Community-Erweiterungen

DuckDB unterstützt die Installation von Community-Erweiterungen Dritter. Sie können beispielsweise die Community-Erweiterung tarfs so installieren:

INSTALL tarfs FROM community;

Community-Erweiterungen werden von Community-Mitgliedern beigesteuert, aber in einem zentralen Repository gebaut, signiert und verteilt.

Erweiterungen aktualisieren

Während eingebaute Erweiterungen an ein DuckDB-Release gebunden sind, weil sie in die DuckDB-Binärdatei eingebaut sind, können und werden installierbare Erweiterungen aktualisiert. Um sicherzustellen, dass alle derzeit installierten Erweiterungen auf der neuesten Version sind, rufen Sie auf:

UPDATE EXTENSIONS;

Weitere Details zu Erweiterungsversionen finden Sie auf der Seite Versionierung von Erweiterungen.

Erweiterungen entwickeln

Dieselbe API, die die Core-Erweiterungen verwenden, steht auch für die Entwicklung von Erweiterungen zur Verfügung. So können Nutzer die Funktionalität von DuckDB so erweitern, dass sie am besten zu ihrer Domäne passt. Eine Vorlage zum Erstellen von Erweiterungen gibt es im Repository extension-template. Diese Vorlage enthält auch Dokumentation, wie Sie mit dem Bau einer eigenen Erweiterung beginnen.

Mit Erweiterungen arbeiten

Siehe die Installationsanleitung und die Seite zu erweiterten Installationsmethoden.