大量のデータを格納するのにSQliteを使用していますが、非常に単純なクエリを使用してそのデータを抽出する際に問題があります。現時点では、私のデータベースは1つのテーブルにすぎず、約50millionの行と15の列があります。私はこの表から完全な1列を抽出したいと思います。大規模なSQLiteデータベースから効率的にデータを抽出するにはどうすればよいですか?
私はRSQliteを使ってみました:dbGetQuery(db, ‘select qs from CSI’)
qs
とCSI
はそれぞれ私の列とテーブル名です。 Qは文字列です。このクエリは、何時間も前から実行しています(Rバージョン3.3.3、RSQLite_1.1-2)。
また、同じクエリを使用してSQLite(v3.9.1)用のDBブラウザを試してみましたが、数時間の実行時間後に再び諦めました。 IDKey /索引付けはありませんが、列全体が必要なので、これは影響がないはずです。
私は16GB RAMを搭載した64ビットWindowsマシンで動作しています。妥当な時間内にテーブルから列を抽出するにはどうすればよいですか?それとも、データに簡単にアクセスできるようにデータを保存するのが良い方法はありますか?
私は同様の問題を抱え、 'SQLite'の代わりに' MonetDBLite'(https://www.monetdb.org/blog/monetdblite-r)を使い始めました。 (MonetDBはカラムオーリエントストレージを使用しますが、SQLiteはロー指向ストレージを使用します) –
@docendoありがとう、MonetDBLiteに行きましょう。私のRSQLiteテーブルをMonetDBLiteに直接インポートするには良い方法がありますか?それらを作成するのはかなり時間がかかりましたので、もう一度やり直す必要はありません。乾杯。 – nm200
正しく覚えていれば、私はsqliteデータベースのCSVエクスポートを作成し、それをmonetdblite dbにロードしました –