使用 Duckdb 或 R 中的 arrow 处理大型 CSV 文件

问题描述 投票:0回答:1

我对数据库、duckdb 和 arrow 一无所知——因此很可能会陷入困境。 我的硬盘上有一个很大的 CSV 文件 (7.5 GB)。在 R 中,不将其加载到我的内存中,我想:

  1. 提取列名称
  2. 选择列和行的子集

然后将此子集数据集加载到 R 中。

我该怎么做?根据我在网上找到的信息,我正在努力理解如何做到这一点。

r database duckdb
1个回答
0
投票

如果硬盘上有足够的空间,我会使用

将csv导入到duckdb文件中
library(duckdb)
con <- DBI::dbConnect(duckdb::duckdb(), "your.duckdb")
duckdb::duckdb_read_csv(con, "your_tbl", "your.csv")

现在您可以使用 SQL 来获取有关列的信息,例如

stmt <- paste0(
    "SELECT column_name, data_type FROM ",
    "information_schema.columns WHERE ",
    "table_name = 'your_tbl';"
)
DBI::dbGetQuery(con, stmt)

并选择您的行,例如

stmt <- paste0(
   "SELECT your_col1, your_col2 FROM your_tbl ",
   "WHERE your_col3>0;"
)
dat <- DBI::dbGetQuery(con, stmt)
© www.soinside.com 2019 - 2024. All rights reserved.