Re: [問題] DB資料大筆且快速寫入Sqlite的方法

看板AndroidDev作者 (我還想要更多力量)時間10年前 (2016/04/21 06:21), 10年前編輯推噓4(4010)
留言14則, 5人參與, 最新討論串2/2 (看更多)

04/20 17:16,
insert into XXXX values (…), (…), (…) …
04/20 17:16

04/20 17:17,
要sqlite 3.7.11(通常是android 4.1)以上
04/20 17:17

04/20 18:42,
應該有長度限制但是我不知道是多少,你可以例如一次一千筆
04/20 18:42

04/20 21:07,
insert into table(...,...,...) select * from xxx
04/20 21:07

04/20 21:07,
這樣子試看看吧!不知道可不可行....
04/20 21:07
要注意這種方式 Sqlite 有限制一次最多只能寫入 500 筆。 參考:http://www.sqlite.org/limits.html#max_compound_select

04/21 00:35,
查詢 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

04/21 09:25, , 1F
感謝您的回覆,看了範例是在創建Sqlite時就寫入資料,
04/21 09:25, 1F

04/21 09:26, , 2F
不過小弟遇到的問題是,從Oracle資料庫Select出3萬筆資料
04/21 09:26, 2F

04/21 09:27, , 3F
,這時3萬筆資料應該是在記憶體裡面,目前是一筆一筆的寫
04/21 09:27, 3F

04/21 09:28, , 4F
入Sqlite,使用cv.put("xxx",aaa);
04/21 09:28, 4F

04/21 09:28, , 5F
db.insert("TableName", null, cv); 這種方式,時間秏時
04/21 09:28, 5F

04/21 09:29, , 6F
約30分鐘,所以才希望找更快的處理方式。
04/21 09:29, 6F

04/21 09:29, , 7F
亦感謝您提供這種教學,小弟亦有收獲,謝謝。
04/21 09:29, 7F

04/21 09:55, , 8F
在外圈包了transaction還是需要30分鐘?
04/21 09:55, 8F

04/21 15:37, , 9F
是的,我外層有用beginTransaction(); 和
04/21 15:37, 9F

04/21 15:37, , 10F
setTransactionSuccessful()包起來,但還是需要30分鐘。
04/21 15:37, 10F

04/21 16:17, , 11F
感謝貓神分享!
04/21 16:17, 11F

04/22 17:01, , 12F
有學到有推~~ 感謝
04/22 17:01, 12F

04/26 13:51, , 13F
才3萬筆寫30分鐘,你要不要看一下我丟的連結?
04/26 13:51, 13F

04/26 13:52, , 14F
沒意外應該是你的 transaction 包的範圍不對
04/26 13:52, 14F
文章代碼(AID): #1N603rHE (AndroidDev)
文章代碼(AID): #1N603rHE (AndroidDev)