跳到内容

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)