gpt4 book ai didi

iphone - Javascript 数据库批量插入

转载 作者:行者123 更新时间:2023-11-28 04:15:10 24 4
gpt4 key购买 nike

我正在尝试将超过 70,000 行插入 javascript 数据库(使用 Chrome 5.0.317.2)。插入需要很长时间。实际页面在几秒钟内加载,我可以看到进度,因为插入每一行时百分比增加非常缓慢。插入所有记录大约花了一个小时。有没有办法优化插入,或者以某种方式从预加载的 SQLite 数据库开始?

<script src="jquery.1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
// Truncated to 1 row for example. There are really 76547 rows.
var zipcodes = var zipcodes = [{"city_name":"AMHERST","city_alias":"AMHERST","zipcode":"01002"}];
var db;
function openMyDatabase() {
var shortName = 'mydb';
var version = '1.0';
var displayName = 'mydb';
var maxSize = 65536;
db = openDatabase(shortName, version, displayName, maxSize);
db.transaction(
function(transaction) {
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS zipcode ' +
' (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, ' +
' city_name TEXT NOT NULL, ' +
' city_alias TEXT NOT NULL, ' +
' zipcode TEXT NOT NULL)'
);
}
);
$.each(zipcodes, function(i, zipcode) {
insertZipcode(zipcode.city_name, zipcode.city_alias, zipcode.zipcode, i);
});
}

function errorHandler(transaction, error) {
alert('Oops. Error was '+error.message+' (Code '+error.code+')');
return true;
}

function insertZipcode(cityName, cityAlias, zipcode, i) {
db.transaction(
function(transaction) {
transaction.executeSql(
'INSERT INTO zipcode (city_name, city_alias, zipcode) VALUES (?, ?, ?);',
[cityName, cityAlias, zipcode],
function(){
$('#counter').html((100 * i / zipcodes.length) + '%');
},
errorHandler
);
}
);
return false;
}

$(function() {
openMyDatabase();
});
</script>

解决方案:在 PHP 端,我制作了一个关联数组,使用邮政编码作为键,使用城市数组作为值,然后通过 json_encode 运行它并将其传递给 javascript。在 javascript 方面,我能够使用以下代码快速获取特定邮政编码的城市列表:

var zipcodes = {"55437":["MINNEAPOLIS","BLOOMINGTON"]}; //truncated
alert('Cities in 55437: ' + zipcodes['55437'].join(', '));

最佳答案

我能看到的一个问题是您试图一次插入一行,这会导致建立连接等方面的大量开销...

如果您可以一次性插入多行(一次可能插入 20 或 50 行),速度会更快。您可以使用一些有效的程序或 INSERT INTO 或其他东西插入多行..

关于iphone - Javascript 数据库批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com