将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)
}
