将SQLite SQL文件导入Web SQL数据库的最简单方法是什么
-
26-09-2019 - |
题
也许我缺少某些内容,但是我需要一个客户端数据库,以预先填充数据。
为了测试客户端数据库是否符合任务,我创建了一些使用虚拟数据的虚拟表 transaction.executeSql()
方法。但是根据我的收集,它需要每个创建表并插入查询的executesQL调用。我很懒,这对我来说似乎太多了。
我想知道...:我可以使用SQLite GUI快速创建SQLite表。我已经尝试导出一个SQL文件并将其全部运行在一个executesQL语句中,但这只是处理第一个“创建表”。
我不知道一次运行多个查询的事务对象的某种特殊方法吗?
这是用于移动野生动物园购买的方式, 根据苹果 使用SQLITE数据库为客户端数据库的内容供电。
解决方案
我将所有SQL代码都放入一个文件中,每行命令一个命令,然后使用AJAX将文件和循环循环在每行执行的每行上
提示:使用如果不存在的话,因此您可以每次启动数据库调用
其他提示
在命令行(在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!");
}
}
不隶属于 StackOverflow