【发布时间】:2013-04-17 01:59:35
【问题描述】:
我想通过文件或任何最好的方式预加载 9000 条记录。我的想法是我想在某个地方有 9000 条记录,我想通过 phonegap 将它们加载到 sqlite 数据库中。除了从某个地方加载数据之外,我还有所有这些工作。这是我到目前为止所拥有的
我有一个文件 records.csv 文件,这是我的代码
function populate_events_from_csv(db){
var event_data;
$.ajax({
type: "GET",
url: "records.csv",
dataType: "text/csv",
error: function (request, status, error) {
console.log('fail');
console.log(request.responseText);
},
success: function(data) {
console.log('success');
event_data = $.csv.toObjects(data); }
});
console.log(event_data);
db.transaction(function(tx) {
var q = 'INSERT INTO Events (id, name) VALUES (?, ?)';
_(event_data).each(function(row) {
tx.executeSql(q, [row.id, row.name]);
});
});
}
这种方法可行,但由于记录 csv 中的双引号和单引号而失败
如果有人看到我做错了什么或最初插入这 9000 条记录的另一种解决方案
【问题讨论】:
-
尝试替换 csv 文件中的引号,例如
var expr = new RegExp('"', 'g'); data = data.replace(expr, '\\"');。 -
你能提供
$.csv吗? -
为什么您认为引号有问题?
executeSql或csv.toObjects没有让它们正确吗?如果是,请提供函数的代码和 CSV 示例 -
您的代码是同步的(这取决于在尝试访问
event_data之前完成的 ajax 调用)。将数据库访问部分复制并粘贴到成功函数中,或者在您的ajax选项中指定async: false...
标签: javascript jquery file cordova underscore.js