
连接到 DuckDB 数据库实例
来源:R/Driver.R
, R/dbConnect__duckdb_driver.R
, R/dbDisconnect__duckdb_connection.R
duckdb.Rd
duckdb()
用于创建或重用一个数据库实例。
duckdb_shutdown()
用于关闭一个数据库实例。
返回一个 adbcdrivermanager::adbc_driver()
对象,用于通过 adbcdrivermanager 包连接 Arrow 数据库。
dbConnect()
连接到数据库实例。
dbDisconnect()
关闭 DuckDB 数据库连接。关联的 DuckDB 数据库实例会自动关闭,不再需要设置 shutdown = TRUE
或调用 duckdb_shutdown()
。
用法
duckdb(
dbdir = DBDIR_MEMORY,
read_only = FALSE,
bigint = "numeric",
config = list(),
...,
environment_scan = FALSE
)
duckdb_shutdown(drv)
duckdb_adbc()
# S4 method for class 'duckdb_driver'
dbConnect(
drv,
dbdir = DBDIR_MEMORY,
...,
debug = getOption("duckdb.debug", FALSE),
read_only = FALSE,
timezone_out = "UTC",
tz_out_convert = c("with", "force"),
config = list(),
bigint = "numeric",
array = "none"
)
# S4 method for class 'duckdb_connection'
dbDisconnect(conn, ..., shutdown = TRUE)
参数
- dbdir
数据库文件的位置。应为文件系统中现有目录的路径。默认情况下(或设置为
""
),所有数据都保存在 RAM 中。- read_only
设置为
TRUE
以进行只读操作。对于基于文件的数据库,这仅在数据库文件首次打开时应用。后续连接(通过相同的drv
对象或指向相同路径的drv
对象)将默默地忽略此标志。- bigint
64 位整数的返回方式。有两个选项:
"numeric"
和"integer64"
。如果选择"numeric"
,大整数将被视为双精度/数值类型。如果选择"integer64"
,大整数将设置为 bit64 编码。- config
包含 DuckDB 配置标志的命名列表,请参阅 https://duckdb.net.cn/docs/configuration/overview#configuration-reference 了解可能的选项。这些标志仅在实例化数据库对象时应用。后续连接将默默地忽略这些标志。
- ...
保留用于未来扩展,必须为空。
- environment_scan
设置为
TRUE
以将调用环境中的数据框视为表。如果存在同名的数据库表,则该数据库表优先。此设置的默认值可能会在未来版本中更改。- drv
duckdb()
返回的对象- debug
打印额外的调试信息,例如查询。
- timezone_out
返回给 R 的时区,默认为
"UTC"
,这是 DuckDB 目前唯一支持的时区。如果要在本地时区显示日期时间值,请设置为Sys.timezone()
或""
。- tz_out_convert
如何将时间戳列转换为
timezone_out
中指定的时区。有两个选项:"with"
和"force"
。如果选择"with"
,时间戳将以其在指定时区中显示的方式返回。如果选择"force"
,时间戳将具有与数据库中时间戳相同的时钟时间,但使用新的时区。- array
数组的返回方式。有两个选项:
"none"
和"matrix"
。如果选择"none"
,则不返回数组,而是生成错误。如果选择"matrix"
,则数组以列矩阵的形式返回。每个数组是矩阵中的一行。- conn
一个
duckdb_connection
对象- shutdown
未使用。数据库实例会自动关闭。
返回值
duckdb()
返回一个 duckdb_driver 类的对象。
调用 dbDisconnect()
和 duckdb_shutdown()
是为了它们的副作用。
一个 "adbc_driver" 类的对象
dbConnect()
返回一个 duckdb_connection 类的对象。
示例
library(adbcdrivermanager)
with_adbc(db <- adbc_database_init(duckdb_adbc()), {
as.data.frame(read_adbc(db, "SELECT 1 as one;"))
})
#> one
#> 1 1
drv <- duckdb()
con <- dbConnect(drv)
dbGetQuery(con, "SELECT 'Hello, world!'")
#> 'Hello, world!'
#> 1 Hello, world!
dbDisconnect(con)
duckdb_shutdown(drv)
# Shorter:
con <- dbConnect(duckdb())
dbGetQuery(con, "SELECT 'Hello, world!'")
#> 'Hello, world!'
#> 1 Hello, world!
dbDisconnect(con, shutdown = TRUE)