Using R to Query a SQLite file Help: DBI::dbGetQuery() 永远不会完成,非常慢

Using R to Query a SQLite file Help: DBI::dbGetQuery() never completes, very slow

我有一个 SQLite 文件,其中包含 table 大约 900 万行和 30 多列。直到几天前,以下代码运行良好:

path <- file.path(basepath, "Rmark_web", "SQL_Data", "2020Q3_Enterprise_Exposure_Wind.sqlite")
cn <- DBI::dbConnect(RSQLite::SQLite(), path)
df <- DBI::dbGetQuery(cn, "select Longitude, Latitude, City, State, Total_Value, GridID, new_LOB from [2020Q3_Enterprise_Exposure_Wind] where State in ('GA')")
DBI::dbDisconnect(cn)

当我 运行 在我的本地计算机上包含此查询的代码时,需要一些时间但它确实完成了。我目前正在尝试 运行 在具有以下指标的 docker 图像中:

docker run --memory=10g --rm -d -p 8787:8787     -v /efs:/home/rstudio/efs     -e ROOT=TRUE     -e DISABLE_AUTH=true     myrstudio        

有没有办法调试 RSQLite 包?有没有另一种方法可以在不使用这个包的情况下执行这个查询?其余代码 运行 没问题,但它在这个特定步骤中被阻止并且通常不会完成(特别是如果这段代码 运行 是第 2 或第 3 次出现在docker 图片)。

要包含在查询中的州数从 运行 更改为 运行。

如果您遇到此问题,请务必从 SQL 文件中删除所有不使用的列。最后,我将它作为 postgres 数据库在线加载,这似乎解决了我遇到的问题。这是对任何人都有益的新查询。

library(RPostgres)
library(RPostgreSQL)
library(DBI)
db <- 'airflow_db'  #provide the name of your db
    
host_db <- [omitted for privacy] 
    
db_port <- [omitted for privacy]  # or any other port specified by the DBA
    
db_user <- [omitted for privacy]  
    
db_password <- Sys.getenv("DB_PASS")
    
con <- dbConnect(RPostgres::Postgres(), dbname = db, host=host_db, port=db_port, user=db_user, password=db_password)
query <- paste('select * from weather_report.ent_expo_data where "State" in (', in_states_clause,')', sep='')
print(query)
df <- dbGetQuery(con, query)