2013-09-26 63 views
0

我試圖在SQLite數據庫中插入大約30,000條記錄。插入語句不插入任何記錄 - 但是如果我一次將它分成200個記錄塊,它似乎工作正常。它不會拋出異常 - 它實際上並不會插入記錄。必須有一些簡單的東西,我錯過了...SQLite插入不適用於大量記錄

app.applyChangesPriceBands = function(pbresultset, callback) { 

    app.db.transaction(
     function(tx) { 
      var l = pbresultset.length; 
      var sql = "INSERT OR REPLACE INTO priceBands (prb_ID, stk_ItemNo, prb_Priceband, prb_CurrentPrice, prb_NormalPrice, prb_Deleted, prb_DateLastUpdated) " + 
       "VALUES (?, ?, ?, ?, ?, ?, ?)"; 
      var e; 

      for (var i = 0; i < l; i++) { 
       e = pbresultset[i]; 

       var params = [e.prb_ID, e.stk_ItemNo, e.prb_Priceband, e.prb_CurrentPrice, e.prb_NormalPrice, e.prb_Deleted, e.prb_DateLastUpdated]; 
       tx.executeSql(sql, params); 
      } 

     } 
    ); 

    app.finishedUpdating(app.updateType); 

} 
+0

我對sqlite並不是特別「興奮」,但是我猜你的問題是使用緩衝區或緩存 - 30k行在一個動作中很重要,特別是當你正在執行作爲事務的動作時 - 即可摺疊(較高的開銷)。 –

+0

您的數據庫是使用回滾日誌還是預寫日誌? – keltar

回答

0

嘗試提交每隔100個插入。也許這是因爲大量的回滾段。

+0

這工作的一種享受,所以我想這是因爲試圖一次插入太多的交易! – user2818405