Start & Beenden
Um DuckDB zu verwenden, müssen Sie zuerst ein duckdb_database-Handle mit duckdb_open() initialisieren. duckdb_open() nimmt als Parameter die Datenbankdatei entgegen, aus der gelesen und in die geschrieben wird. Der spezielle Wert NULL (nullptr) kann verwendet werden, um eine In-Memory-Datenbank zu erzeugen. Beachten Sie, dass bei einer In-Memory-Datenbank keine Daten auf die Festplatte persistiert werden (d. h. alle Daten gehen verloren, wenn Sie den Prozess beenden).
Mit dem duckdb_database-Handle können Sie eine oder mehrere duckdb_connections mit duckdb_connect() erzeugen. Einzelne Verbindungen sind zwar thread-sicher, werden aber während einer Abfrage gesperrt. Es wird daher empfohlen, dass jeder Thread seine eigene Verbindung verwendet, um die beste parallele Leistung zu erzielen.
Alle duckdb_connections müssen explizit mit duckdb_disconnect() getrennt werden, und die duckdb_database muss explizit mit duckdb_close() geschlossen werden, um Speicher- und Datei-Handle-Leaks zu vermeiden.
Beispiel
duckdb_database db;duckdb_connection con;
if (duckdb_open(NULL, &db) == DuckDBError) { // handle error}if (duckdb_connect(db, &con) == DuckDBError) { // handle error}
// run queries...
// cleanupduckdb_disconnect(&con);duckdb_close(&db);API-Referenz im Überblick
duckdb_instance_cache duckdb_create_instance_cache();
duckdb_state duckdb_get_or_create_from_cache(duckdb_instance_cache instance_cache, const char *path, duckdb_database *out_database, duckdb_config config, char **out_error);
void duckdb_destroy_instance_cache(duckdb_instance_cache *instance_cache);
duckdb_state duckdb_open(const char *path, duckdb_database *out_database);
duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_database, duckdb_config config, char **out_error);
void duckdb_close(duckdb_database *database);
duckdb_state duckdb_connect(duckdb_database database, duckdb_connection *out_connection);
void duckdb_interrupt(duckdb_connection connection);
duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection);
void duckdb_disconnect(duckdb_connection *connection);
void duckdb_connection_get_client_context(duckdb_connection connection, duckdb_client_context *out_context);
void duckdb_connection_get_arrow_options(duckdb_connection connection, duckdb_arrow_options *out_arrow_options);
idx_t duckdb_client_context_get_connection_id(duckdb_client_context context);
void duckdb_destroy_client_context(duckdb_client_context *context);
void duckdb_destroy_arrow_options(duckdb_arrow_options *arrow_options);
const char *duckdb_library_version();
duckdb_value duckdb_get_table_names(duckdb_connection connection, const char *query, bool qualified);
duckdb_create_instance_cache
Erzeugt einen neuen Datenbank-Instanzcache. Der Instanzcache ist notwendig, wenn ein Client/Programm innerhalb desselben Prozesses mehrere Datenbanken zur selben Datei (wieder)öffnet. Muss mit ‘duckdb_destroy_instance_cache’ zerstört werden.
Rückgabewert
Der Datenbank-Instanzcache.
Syntax
duckdb_instance_cache duckdb_create_instance_cache(
);
duckdb_get_or_create_from_cache
Erzeugt eine neue Datenbankinstanz im Instanzcache oder holt eine vorhandene Datenbankinstanz. Muss mit ‘duckdb_close’ geschlossen werden.
Syntax
duckdb_state duckdb_get_or_create_from_cache(
duckdb_instance_cache instance_cache,
const char *path,
duckdb_database *out_database,
duckdb_config config,
char **out_error
);
Parameter
instance_cache: Der Instanzcache, in dem die Datenbank erzeugt oder aus dem sie geholt wird.path: Pfad zur Datenbankdatei auf der Festplatte. Sowohlnullptrals auch:memory:öffnen oder holen eine In-Memory-Datenbank.out_database: Die resultierende gecachte Datenbank.config: (Optional) Konfiguration, die zum Erzeugen der Datenbank verwendet wird.out_error: Falls gesetzt und die FunktionDuckDBErrorzurückgibt, enthält dies die Fehlermeldung. Beachten Sie, dass die Fehlermeldung mitduckdb_freefreigegeben werden muss.
Rückgabewert
DuckDBSuccess bei Erfolg oder DuckDBError bei Fehler.
duckdb_destroy_instance_cache
Zerstört einen vorhandenen Datenbank-Instanzcache und gibt seinen Speicher frei.
Syntax
void duckdb_destroy_instance_cache(
duckdb_instance_cache *instance_cache
);
Parameter
instance_cache: Der zu zerstörende Instanzcache.
duckdb_open
Erzeugt eine neue Datenbank oder öffnet eine vorhandene Datenbankdatei am angegebenen Pfad. Wird kein Pfad angegeben, wird stattdessen eine neue In-Memory-Datenbank erzeugt. Die Datenbank muss mit ‘duckdb_close’ geschlossen werden.
Syntax
duckdb_state duckdb_open(
const char *path,
duckdb_database *out_database
);
Parameter
path: Pfad zur Datenbankdatei auf der Festplatte. Sowohlnullptrals auch:memory:öffnen eine In-Memory-Datenbank.out_database: Das resultierende Datenbankobjekt.
Rückgabewert
DuckDBSuccess bei Erfolg oder DuckDBError bei Fehler.
duckdb_open_ext
Erweiterte Version von duckdb_open. Erzeugt eine neue Datenbank oder öffnet eine vorhandene Datenbankdatei am angegebenen Pfad. Die Datenbank muss mit ‘duckdb_close’ geschlossen werden.
Syntax
duckdb_state duckdb_open_ext(
const char *path,
duckdb_database *out_database,
duckdb_config config,
char **out_error
);
Parameter
path: Pfad zur Datenbankdatei auf der Festplatte. Sowohlnullptrals auch:memory:öffnen eine In-Memory-Datenbank.out_database: Das resultierende Datenbankobjekt.config: (Optional) Konfiguration, die zum Starten der Datenbank verwendet wird.out_error: Falls gesetzt und die FunktionDuckDBErrorzurückgibt, enthält dies die Fehlermeldung. Beachten Sie, dass die Fehlermeldung mitduckdb_freefreigegeben werden muss.
Rückgabewert
DuckDBSuccess bei Erfolg oder DuckDBError bei Fehler.
duckdb_close
Schließt die angegebene Datenbank und gibt den gesamten für diese Datenbank allokierten Speicher frei.
Dies sollte aufgerufen werden, nachdem Sie mit einer über duckdb_open oder duckdb_open_ext allokierten Datenbank fertig sind.
Beachten Sie, dass das Versäumnis, duckdb_close aufzurufen (z. B. bei einem Programmabsturz), keine Datenkorruption verursacht.
Trotzdem wird empfohlen, ein Datenbankobjekt immer korrekt zu schließen, wenn Sie damit fertig sind.
Syntax
void duckdb_close(
duckdb_database *database
);
Parameter
database: Das herunterzufahrende Datenbankobjekt.
duckdb_connect
Öffnet eine Verbindung zu einer Datenbank. Verbindungen werden benötigt, um die Datenbank abzufragen und den mit der Verbindung verbundenen Transaktionszustand zu speichern. Die instanziierte Verbindung sollte mit ‘duckdb_disconnect’ geschlossen werden.
Syntax
duckdb_state duckdb_connect(
duckdb_database database,
duckdb_connection *out_connection
);
Parameter
database: Die Datenbankdatei, mit der verbunden wird.out_connection: Das resultierende Verbindungsobjekt.
Rückgabewert
DuckDBSuccess bei Erfolg oder DuckDBError bei Fehler.
duckdb_interrupt
Unterbricht eine laufende Abfrage
Syntax
void duckdb_interrupt(
duckdb_connection connection
);
Parameter
connection: Die zu unterbrechende Verbindung
duckdb_query_progress
Ermittelt den Fortschritt der laufenden Abfrage
Syntax
duckdb_query_progress_type duckdb_query_progress(
duckdb_connection connection
);
Parameter
connection: Die aktive Verbindung
Rückgabewert
-1, wenn kein Fortschritt vorliegt, oder ein Prozentsatz des Fortschritts
duckdb_disconnect
Schließt die angegebene Verbindung und gibt den gesamten für diese Verbindung allokierten Speicher frei.
Syntax
void duckdb_disconnect(
duckdb_connection *connection
);
Parameter
connection: Die zu schließende Verbindung.
duckdb_connection_get_client_context
Ermittelt den Client-Kontext der Verbindung.
Syntax
void duckdb_connection_get_client_context(
duckdb_connection connection,
duckdb_client_context *out_context
);
Parameter
connection: Die Verbindung.out_context: Der Client-Kontext der Verbindung. Muss mitduckdb_destroy_client_contextzerstört werden.
duckdb_connection_get_arrow_options
Ermittelt die Arrow-Optionen der Verbindung.
Syntax
void duckdb_connection_get_arrow_options(
duckdb_connection connection,
duckdb_arrow_options *out_arrow_options
);
Parameter
connection: Die Verbindung.
duckdb_client_context_get_connection_id
Gibt die Verbindungs-ID des Client-Kontexts zurück.
Syntax
idx_t duckdb_client_context_get_connection_id(
duckdb_client_context context
);
Parameter
context: Der Client-Kontext.
Rückgabewert
Die Verbindungs-ID des Client-Kontexts.
duckdb_destroy_client_context
Zerstört den Client-Kontext und gibt seinen Speicher frei.
Syntax
void duckdb_destroy_client_context(
duckdb_client_context *context
);
Parameter
context: Der zu zerstörende Client-Kontext.
duckdb_destroy_arrow_options
Zerstört die Arrow-Optionen und gibt ihren Speicher frei.
Syntax
void duckdb_destroy_arrow_options(
duckdb_arrow_options *arrow_options
);
Parameter
arrow_options: Die zu zerstörenden Arrow-Optionen.
duckdb_library_version
Gibt die Version der gelinkten DuckDB zurück, mit einem Versions-Postfix für Dev-Versionen
Üblicherweise verwendet für die Entwicklung von C-Erweiterungen, die dies für eine Kompatibilitätsprüfung zurückgeben müssen.
Syntax
const char *duckdb_library_version(
);
duckdb_get_table_names
Ermittelt die Liste der (vollständig qualifizierten) Tabellennamen der Abfrage.
Syntax
duckdb_value duckdb_get_table_names(
duckdb_connection connection,
const char *query,
bool qualified
);
Parameter
connection: Die Verbindung, für die die Tabellennamen ermittelt werden.query: Die Abfrage, für die die Tabellennamen ermittelt werden.qualified: Gibt vollständig qualifizierte Tabellennamen (catalog.schema.table) zurück, wenn auf true gesetzt, andernfalls nur die (nicht escapeten) Tabellennamen.
Rückgabewert
Ein duckdb_value vom Typ VARCHAR[] mit den (vollständig qualifizierten) Tabellennamen der Abfrage. Muss mit duckdb_destroy_value zerstört werden.