gpt4 book ai didi

sql - 将 SQLite SQL 文件导入 WEB SQL 数据库的最简单方法是什么

转载 作者:IT王子 更新时间:2023-10-29 06:23:26 27 4
gpt4 key购买 nike

也许我遗漏了什么,但我需要一个预先填充了大量数据的客户端数据库。

为了测试客户端数据库是否能够胜任这项任务,我使用 transaction.executeSql() 方法创建了一些包含虚拟数据的虚拟表。但据我所知,它需要对每个 CREATE TABLE 和 INSERT INTO 查询执行 executeSQL 调用。我很懒惰,这对我来说似乎工作量太大了。

我想知道...:我可以使用 SQLite GUI 相当快速地创建一个 SQLite 表。我试过导出一个 SQL 文件并在一个 executeSQL 语句中运行它,但它只处理第一个 'CREATE TABLE' 位,没有插入。

是否有一些我不知道的用于同时运行多个查询的事务对象的特殊方法?

这是为Mobile Safari购买的方式,即according to Apple使用 SQLite 数据库来支持他们的客户端数据库。

最佳答案

在命令行上(在 linux 机器上),使用

sqlite3 myDatabase.sqlite .dump > myDatabase.sql

现在您已将 sqlite 文件转储为纯 sql 文件。它将包含创建表语句和插入语句。

然后,一些客户端代码(可能需要一些调整,但你会明白的)

首先,获取 sql 转储。 (使用 jQuery 的示例)

$.get('./dumps/myDatabase.sql', function(response) {
// console.log("got db dump!", response);
var db = openDatabase('myDatabase', '1.0', 'myDatabase', 10000000);
processQuery(db, 2, response.split(';\n'), 'myDatabase');
});

processQuery 函数一条一条地处理所有语句,并默默地忽略错误。

function processQuery(db, i, queries, dbname) {
if(i < queries.length -1) {
console.log(i +' of '+queries.length);
if(!queries[i+1].match(/(INSERT|CREATE|DROP|PRAGMA|BEGIN|COMMIT)/)) {
queries[i+1] = queries[i]+ ';\n' + queries[i+1];
return processQuery(db, i+1, queries, dbname);
}
console.log('------------>', queries[i]);
db.transaction( function (query){
query.executeSql(queries[i]+';', [], function(tx, result) {
processQuery(db, i +1, queries,dbname);
});
}, function(err) {
console.log("Query error in ", queries[i], err.message);
processQuery(db, i +1, queries, dbname);
});
} else {
console.log("Done importing!");
}
}

关于sql - 将 SQLite SQL 文件导入 WEB SQL 数据库的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834534/

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