我正在處理基於SQLite數據庫的字典應用程序,其數據量超過300,000行。如何在第一次運行時填充大型sqlite數據庫
問題是數據庫文件的最終形式包含全文索引表,並且重量超過150Mb。
我已經設法通過創建一個無內容的fts4表將.db文件大小降到最低。 數據庫不能小於。我還設法將預填充的數據庫放入應用程序中,並且工作正常。
問題是我不能將最終的.db文件保存在/ assets中,並在第一次運行時將其複製到sdcard,因爲它太大了。我也不想在第一次運行時下載它。
散裝INSERT
荷蘭國際集團的數據,即使在開始交易和SQLite優化,沒有索引需要永遠所以它也不是一個選項。
的好處是用來建立數據庫,以CSV格式和壓縮的原始數據,是30MB和SQLite的命令行選項.import
非常快(10萬行〜1秒)。但它可以」無需root權限即可從應用程序訪問。
我很想將應用程序與/ assets中的壓縮CSV文件捆綁在一起,解壓縮它們,在SD卡上創建數據庫,然後導入CSV,但是似乎對我來說是不可能的。雖然有許多字典應用程序似乎正在做這個。 (下載的應用程序是十幾兆字節,首次運行時建立數據庫,並且在SD卡上佔用數百兆字節的空間)。
我該如何做到這一點?
我一直在爲此工作過去兩週,只是用完了想法。我是新開發的Android開發人員,所以我們將非常感謝您的幫助。
交易** **或交易?只對所有插入使用單個事務很快。 –
我的意思是單筆交易。這確實需要幾分鐘時間。 – MarshallBananas
您是否使用PRAGMA語句(在所有其他語句之前調用,在sqlite數據庫上執行第一個命令之前調用)關閉sqlite同步模式(synchronous = off)並僅依賴於操作系統來描述應用程序?還要將日記模式更改爲內存:http://www.sqlite.org/pragma.html#pragma_synchronous –