我将 R 与 SQLite 结合使用,使用 RSQLite 来持久化我的数据,因为我没有足够的 RAM 来不断存储所有列并使用它们进行计算。我使用以下方法向 SQLite 数据库添加了一个空列:
dbGetQuery(db, "alter table test_table add column newcol real)
现在我想使用我在 R 中计算并存储在我的 data.table 列 dtab$newcol 中的数据来填充此列。我尝试了以下方法:
dbGetQuery(db, "update test_table set newcol = ? where id = ?", bind.data = data.frame(transactions$sum_year, transactions$id))
不幸的是,R 似乎在做某事,但没有使用任何 CPU 时间或 RAM 分配。数据库不会改变大小,即使 24 小时后也没有任何改变。因此,我认为它已经崩溃 - 没有任何输出。
我使用更新语句错误吗?有没有其他方法可以做到这一点?
更新
我还尝试了 RSQLite 函数 dbSendQuery 和 dbGetPreparedQuery - 两者的结果相同。但是,有效的是在不使用 bind.data 的情况下更新单行。因此,更新列的循环似乎是可能的,但由于数据集很大,我将不得不评估性能。