Javascript 如何将WebSQL数据库导出到.sql文件?(比如mysqldump)

Javascript 如何将WebSQL数据库导出到.sql文件?(比如mysqldump),javascript,sql,html,web-sql,Javascript,Sql,Html,Web Sql,我正在开发一个基于HTML的移动应用程序,它使用WebSQL存储用户数据。作为WebSQL,DB存储在移动设备上的客户端本地。该应用程序在脱机环境中使用 我需要添加一个函数来导出数据,以便当应用程序稍后连接到internet时,可以将数据作为.sql文件发送回服务器 这是我第一次使用WebSQL,我正在尝试做一些类似于mysqldump的事情。这可能吗?或者有没有一种方法可以用WebSQL模仿这种功能?我上个月在博客中谈到了这一点(),但既然如此,我就不赞成只共享解决方案,我将在这里发布一些代码

我正在开发一个基于HTML的移动应用程序,它使用WebSQL存储用户数据。作为WebSQL,DB存储在移动设备上的客户端本地。该应用程序在脱机环境中使用

我需要添加一个函数来导出数据,以便当应用程序稍后连接到internet时,可以将数据作为.sql文件发送回服务器


这是我第一次使用WebSQL,我正在尝试做一些类似于mysqldump的事情。这可能吗?或者有没有一种方法可以用WebSQL模仿这种功能?

我上个月在博客中谈到了这一点(),但既然如此,我就不赞成只共享解决方案,我将在这里发布一些代码。;)基本前提是:

你检查每一张桌子。 选择*。 获取数据行,然后将其转换为字符串

这是我用来获取数据的代码

function backup(table) {
var def = new $.Deferred();
db.readTransaction(function(tx) {
    tx.executeSql("select * from "+table, [], function(tx,results) {
        var data = convertResults(results);
        console.dir(data);
        def.resolve(data);
    });
}, dbError);

return def;
}

$(document).on("click", "#doBackupBtn", function(e) {
e.preventDefault();
console.log("Begin backup process");

$.when(
    backup("notes"), 
    backup("log")
).then(function(notes, log) {
    console.log("All done");
    //Convert to JSON
    var data = {notes:notes, log:log};
    var serializedData = JSON.stringify(data);
    console.log(serializedData);
});

});
最后两行是您要调整的内容。对我来说,我想要JSON,所以我使用本机JSON序列化。如果需要SQL,则需要在数据行上循环并生成INSERT语句。不过,在服务器端这样做可能会更好

我忘了包括这个实用程序。它只是将SQLResultSet对象转换为一个更简单的数组

//Generic utility
function convertResults(resultset) {
var results = [];
for(var i=0,len=resultset.rows.length;i<len;i++) {
    var row = resultset.rows.item(i);
    var result = {};
    for(var key in row) {
        result[key] = row[key];
    }
    results.push(result);
}
return results;
}
//通用实用程序
函数convertResults(结果集){
var结果=[];

对于(var i=0,len=resultset.rows.length;i几年前我有一个部分解决方案,现在我将它打包到一个自包含的库中

请在以下网址下载
websqldump.js

有几个选项,但应该能够导出数据库并将其发布到远程服务器,如下所示:

// Export database and POST to remote server
websqldump.export({
  database: 'NorthwindLite',
  success: function(sql) {
    $.ajax({type: 'POST', url: 'http://myserver.com/sync', data: sql});
  }
});

希望这有帮助!

您能解释一下在函数convertResults(results)中所做的工作吗;因为这不在您的代码中?哦,对不起,它将SQLResultSet转换为一个简单对象数组。我马上将其添加到我的答案中。