Google Chrome 拡張機能を使用して Web 上のデータをスクラップします。それらを多次元配列に格納します。すべての論文データを Sqlite データベースに保存したいと考えています。
このページを読みましたHTML5を使用して1000のレコードをsqliteに挿入するときにプロセスをスピードアップする方法ですが、与えられた答えはうまくいかないようです。
INSERTごとにトランザクションを開くと機能します
i=0;
while(i<n){
(function(aa){
db.transaction(function (tx) {
tx.executeSql("INSERT INTO Links2 (c1, c2, c3, c4, c5, c6) VALUES ('"+aa[0]+"', "+parseInt(aa[1])+", '"+parseInt(aa[2])+"', '"+aa[3]+"', '"+aa[4]+"', '"+aa[5]+"')");
});
})(myDataArray[i]);
i++;
}
問題は、 Whileの前にトランザクションを開こうとしたときです。
db.transaction(function (tx) {
i=0;
while(i<n){
aa = myDataArray[i];
txquer(tx, i, aa[0], parseInt(aa[1]), parseInt(aa[2]), aa[3], aa[4], aa[5]);
i++;
}
});
function txquer(tx,i,a,b,c,d,e,f){
console.log("INSERT INTO Links2 (c1, c2, c3, c4, c5, c6) VALUES ('"+a+"', "+b+", '"+c+"', '"+d+"', '"+e+"', '"+f+"')");
tx.executeSql("INSERT INTO Links2 (c1, c2, c3, c4, c5, c6) VALUES ('"+a+"', "+b+", '"+c+"', '"+d+"', '"+e+"', '"+f+"')");
}
すべての console.log 出力を個別にテストすると、動作します。ただし、スクリプトはデータをデータベースに保存しません。