当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将SQLiteSQL文件导入WEBSQL数据库的最简单方法是什么》经验,为你挑选了1个好方法。

也许我错过了一些东西,但我需要一个预先填充了大量数据的客户端数据库.

为了测试客户端数据库是否适合任务,我使用该transaction.executeSql()方法创建了一些带有虚拟数据的虚拟表.但是从我可以收集的内容来看,它需要对每个CREATE TABLE和INSERT INTO查询执行executeSQL调用.我很懒,这对我来说似乎太过分了.

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

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

这是针对Mobile Safari购买的方式,据Apple称,它使用SQLite数据库为其客户端数据库提供支持.



1> SchizoDuckie..:

在命令行(在Linux框中),使用

sqlite3 myDatabase.sqlite .dump > myDatabase.sql

现在您将sqlite文件转储到普通的sql文件中.它将包含create table语句和insert语句.

然后,一些客户端代码(可能需要一些调整,但你会得到的想法)

首先,抓住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!");
  }
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有