看板 AndroidDev 關於我們 聯絡資訊
ssccg: insert into XXXX values (…), (…), (…) … 04/20 17:16
ssccg: 要sqlite 3.7.11(通常是android 4.1)以上 04/20 17:17
ssccg: 應該有長度限制但是我不知道是多少,你可以例如一次一千筆 04/20 18:42
joedenkidd: insert into table(...,...,...) select * from xxx 04/20 21:07
joedenkidd: 這樣子試看看吧!不知道可不可行.... 04/20 21:07
要注意這種方式 Sqlite 有限制一次最多只能寫入 500 筆。 參考:http://www.sqlite.org/limits.html#max_compound_select
passli: 查詢 bulk insert 04/21 00:35
通常這種需求就 beginTransaction 下去開始一直寫就好了。 可以考慮用 prepared statement 再幫你加速,不需要每次 compile SQL statement。 可以參考看看這篇: https://www.codeofaninja.com/2013/12/android-sqlite-transaction-tutorial.html 雖然我不知道你的需求和情況,不過如果… - 資料不會變動,可以考慮直接先產生好 sqlite db 預載在程式內 - 資料比較長時間才變動一次,可以考慮 Server 預先產生好 sqlite db 再丟到網路空間去下載?例如 AWS S3 之類的,還可以用 CDN 幫你加速。 通常是先想想看有沒有辦法不要一直做這種一直大量寫入的事情, 逼不得已就是有這種需求才來想怎麼加速寫入。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.82.103 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1461190901.A.44E.html ※ 編輯: lovelycateye (219.85.82.103), 04/21/2016 06:24:31
f814030: 感謝您的回覆,看了範例是在創建Sqlite時就寫入資料, 04/21 09:25
f814030: 不過小弟遇到的問題是,從Oracle資料庫Select出3萬筆資料 04/21 09:26
f814030: ,這時3萬筆資料應該是在記憶體裡面,目前是一筆一筆的寫 04/21 09:27
f814030: 入Sqlite,使用cv.put("xxx",aaa); 04/21 09:28
f814030: db.insert("TableName", null, cv); 這種方式,時間秏時 04/21 09:28
f814030: 約30分鐘,所以才希望找更快的處理方式。 04/21 09:29
f814030: 亦感謝您提供這種教學,小弟亦有收獲,謝謝。 04/21 09:29
bohei: 在外圈包了transaction還是需要30分鐘? 04/21 09:55
f814030: 是的,我外層有用beginTransaction(); 和 04/21 15:37
f814030: setTransactionSuccessful()包起來,但還是需要30分鐘。 04/21 15:37
givemepass: 感謝貓神分享! 04/21 16:17
drdsmile: 有學到有推~~ 感謝 04/22 17:01
lovelycateye: 才3萬筆寫30分鐘,你要不要看一下我丟的連結? 04/26 13:51
lovelycateye: 沒意外應該是你的 transaction 包的範圍不對 04/26 13:52