将CSV文件直接读入DuckDB,尝试检测并为其创建正确的schema。这通常比将数据读入R再写入DuckDB快得多。
用法
duckdb_read_csv(
conn,
name,
files,
...,
header = TRUE,
na.strings = "",
nrow.check = 500,
delim = ",",
quote = "\"",
col.names = NULL,
col.types = NULL,
lower.case.names = FALSE,
sep = delim,
transaction = TRUE,
temporary = FALSE
)
参数
- conn
一个 DuckDB 连接,由
dbConnect()
创建。- name
要注册或取消注册的虚拟表的名称
- files
一个或多个CSV文件名,但它们都应具有相同的结构
- ...
保留供将来扩展使用,必须为空。
- header
CSV文件的第一行是否包含单独的标题
- na.strings
CSV文件中哪些字符串应被视为NULL
- nrow.check
应从CSV文件读取多少行来确定数据类型
- delim
应使用哪个字段分隔符
- quote
CSV文件中列使用的引用字符是什么
- col.names
覆盖检测到或生成的列名
- col.types
与 col.names 顺序相同的列类型字符向量,或一个命名字符向量,其中名称是列名和类型对。有效类型是 DuckDB数据类型,例如 VARCHAR, DOUBLE, DATE, BIGINT, BOOLEAN 等。
- lower.case.names
将列名转换为小写
- sep
delim 的兼容性别名
- transaction
整个操作是否应使用事务
- temporary
设置为
TRUE
以创建临时表
示例
if (FALSE) { # duckdb:::TEST_RE2
con <- dbConnect(duckdb())
data <- data.frame(a = 1:3, b = letters[1:3])
path <- tempfile(fileext = ".csv")
write.csv(data, path, row.names = FALSE)
duckdb_read_csv(con, "data", path)
dbReadTable(con, "data")
dbDisconnect(con)
# Providing data types for columns
path <- tempfile(fileext = ".csv")
write.csv(iris, path, row.names = FALSE)
con <- dbConnect(duckdb())
duckdb_read_csv(con, "iris", path,
col.types = c(
Sepal.Length = "DOUBLE",
Sepal.Width = "DOUBLE",
Petal.Length = "DOUBLE",
Petal.Width = "DOUBLE",
Species = "VARCHAR"
)
)
dbReadTable(con, "iris")
dbDisconnect(con)
}