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