⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Startup & Shutdown

要使用DuckDB,您必须首先使用duckdb_open()初始化一个duckdb_database句柄。duckdb_open()的参数是要读取和写入的数据库文件。特殊值NULLnullptr)可用于创建一个内存数据库。请注意,对于内存数据库,没有数据会持久化到磁盘(即,当您退出进程时,所有数据都会丢失)。

使用duckdb_database句柄,您可以通过duckdb_connect()创建一个或多个duckdb_connection。虽然单个连接是线程安全的,但在查询期间它们会被锁定。因此,建议每个线程使用自己的连接,以实现最佳的并行性能。

所有duckdb_connection必须显式地使用duckdb_disconnect()断开连接,并且duckdb_database必须显式地使用duckdb_close()关闭,以避免内存和文件句柄泄漏。

Example

duckdb_database db;
duckdb_connection con;

if (duckdb_open(NULL, &db) == DuckDBError) {
    // handle error
}
if (duckdb_connect(db, &con) == DuckDBError) {
    // handle error
}

// run queries...

// cleanup
duckdb_disconnect(&con);
duckdb_close(&db);

API Reference Overview

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);
const char *duckdb_library_version();

duckdb_open

创建一个新的数据库或打开存储在给定路径的现有数据库文件。 如果没有给出路径,则会创建一个新的内存数据库。 实例化的数据库应使用'duckdb_close'关闭。

Syntax
duckdb_state duckdb_open(
  const char *path,
  duckdb_database *out_database
);
Parameters
  • path: 磁盘上数据库文件的路径,或 nullptr:memory: 以打开内存数据库。
  • out_database: 结果数据库对象。
Return Value

DuckDBSuccess on success or DuckDBError on failure.


duckdb_open_ext

duckdb_open 的扩展版本。创建一个新的数据库或打开存储在给定路径的现有数据库文件。 实例化的数据库应使用 'duckdb_close' 关闭。

Syntax
duckdb_state duckdb_open_ext(
  const char *path,
  duckdb_database *out_database,
  duckdb_config config,
  char **out_error
);
Parameters
  • path: 磁盘上数据库文件的路径,或 nullptr:memory: 以打开内存数据库。
  • out_database: 结果数据库对象。
  • config: (可选)用于启动数据库系统的配置。
  • out_error: 如果设置并且函数返回DuckDBError,这将包含启动失败的原因。 请注意,必须使用duckdb_free释放错误。
Return Value

DuckDBSuccess on success or DuckDBError on failure.


duckdb_close

关闭指定的数据库并释放为该数据库分配的所有内存。 在使用通过duckdb_openduckdb_open_ext分配的任何数据库后,应调用此函数。 请注意,未能调用duckdb_close(例如,在程序崩溃的情况下)不会导致数据损坏。 尽管如此,建议在使用完数据库对象后始终正确关闭它。

Syntax
void duckdb_close(
  duckdb_database *database
);
Parameters
  • database: 要关闭的数据库对象。


duckdb_connect

打开与数据库的连接。连接是查询数据库所必需的,并且存储与连接相关的事务状态。 实例化的连接应使用'duckdb_disconnect'关闭。

Syntax
duckdb_state duckdb_connect(
  duckdb_database database,
  duckdb_connection *out_connection
);
Parameters
  • database: 要连接的数据库文件。
  • out_connection: 结果连接对象。
Return Value

DuckDBSuccess on success or DuckDBError on failure.


duckdb_interrupt

中断正在运行的查询

Syntax
void duckdb_interrupt(
  duckdb_connection connection
);
Parameters
  • connection: 要中断的连接


duckdb_query_progress

获取正在运行的查询的进度

Syntax
duckdb_query_progress_type duckdb_query_progress(
  duckdb_connection connection
);
Parameters
  • connection: 工作连接
Return Value

如果没有进度则为-1,否则为进度的百分比


duckdb_disconnect

关闭指定的连接并释放为该连接分配的所有内存。

Syntax
void duckdb_disconnect(
  duckdb_connection *connection
);
Parameters
  • connection: 要关闭的连接。


duckdb_library_version

返回链接的DuckDB的版本,开发版本带有版本后缀

通常用于开发必须返回此值以进行兼容性检查的C扩展。

Syntax
const char *duckdb_library_version(
  
);