我正在使用SQlite來存儲大量數據,並且遇到了使用非常簡單的查詢來提取數據的麻煩。目前,我的數據庫只有一張表,大約有5000萬行和15列。我想從這張表中提取一個完整的列。如何最好地從大型SQLite數據庫中有效地提取數據?
我試過使用RSQlite:dbGetQuery(db, ‘select qs from CSI’)
其中qs
和CSI
分別是我的列名和表名。 Q是字符串。這個查詢在放棄之前運行幾個小時(R版本3.3.3,RSQLite_1.1-2)。
我也嘗試了DB瀏覽器的SQLite(v3.9.1),使用相同的查詢,並在運行幾個小時後再次放棄。我沒有IDKey /索引,但是我想因爲我想要整個列,所以這不應該有任何影響。
我在64位Windows機器上運行,內存爲16GB。如何在合理的時間內從我的表中提取列?還是有更好的方式,我應該存儲我的數據以方便訪問?
作爲一個方面說明..我有一個類似的問題,並開始使用'MonetDBLite'(https://www.monetdb.org/blog/monetdblite-r)而不是'SQLite',這使得整個過程快得多(MonetDB使用列式存儲,而SQLite使用面向行式存儲) –
感謝@docendo,我會給MonetDBLite一個去。你知道有沒有一種好的方法可以將我的RSQLite表直接導入到MonetDBLite中?創建它們非常耗時,我想避免再次這樣做。乾杯。 – nm200
如果我沒有記錯,我創建了我的sqlite數據庫的csv導出,然後將其加載到monetdblite db中 –