すべての列を常に格納し、それらを使用して計算するのに十分な RAM がなかったため、RSQLite を使用して RSQLite と組み合わせて R を使用してデータを永続化しています。以下を使用して、空の列を 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 時間経過しても何も変化していません。したがって、出力なしでクラッシュしたと思います。
updateステートメントを間違って使用していますか? これを行う別の方法はありますか?
アップデート
RSQLite 関数 dbSendQuery と dbGetPreparedQuery も試しましたが、どちらも同じ結果でした。ただし、bind.data を使用せずに単一の行を更新することは機能します。したがって、列を更新するループは可能と思われますが、データセットが巨大であるため、パフォーマンスを評価する必要があります。