Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将Web SQL导出到.CSV文件_Javascript_Sqlite_Csv_Export - Fatal编程技术网

Javascript 如何将Web SQL导出到.CSV文件

Javascript 如何将Web SQL导出到.CSV文件,javascript,sqlite,csv,export,Javascript,Sqlite,Csv,Export,我正在编写一个将在webkit浏览器中运行的应用程序。我需要它获取本地存储在设备上的数据,并以.csv格式导出。这是否可以使用javascript实现?这必须在浏览器中完成。Php不是一个选项。谢谢假设sqlite文件位于服务器上(我们不是说本地存储,对吧?),您仍然需要访问文件服务器端。您可以这样做,但您需要手动将javascript序列化为csv。您还需要决定使用什么CSV方言 下面是一个(未经测试的)可能性,它显示了您必须使用的一般模式 function csvQuoteCell(cell

我正在编写一个将在webkit浏览器中运行的应用程序。我需要它获取本地存储在设备上的数据,并以.csv格式导出。这是否可以使用javascript实现?这必须在浏览器中完成。Php不是一个选项。谢谢

假设sqlite文件位于服务器上(我们不是说本地存储,对吧?),您仍然需要访问文件服务器端。

您可以这样做,但您需要手动将javascript序列化为csv。您还需要决定使用什么CSV方言

下面是一个(未经测试的)可能性,它显示了您必须使用的一般模式

function csvQuoteCell(cell, quotechar, sepchar) {
    // quote cells containing sepchar and double quote chars
    // this is an excel dialect
    var quoted = cell;
    if (cell.indexOf(sepchar)!==-1) {
        if (cell.indexOf(quotechar)!==-1 {
            quoted = quoted.replace(quotechar, quotechar+quotechar);
        }
        quoted = quotechar+quoted+quotechar;
    }
    return quoted;
}
function array2csv(ar, quotechar, sepchar) {
    var quoted = [];
    for (var i=0;i<ar.length;i++) {
        quoted.push(csvQuoteCell(ar[i], quotechar, sepchar);
    }
    return quoted.join(sepchar);
}

var db = openDatabase('mydb','1.0','thedatabase',1024*1024);
db.readTransaction(function(tx){
    tx.executeSql('SELECT col1, col2, col3 FROM thetable', [], function(tx, results){
        var quotechar = '"';
        var sepchar = ',';
        var row, rowarray, csvstring;
        var csvs = [];
        var fieldnames = ['col1','col2','col3'];
        // this is the header row
        csvs.append(array2csv(fieldnames, quotechar, sepchar));
        for (var i=0; i<results.rows.length; i++) {
            row = results.rows.item(i);
            // you need to make sure you have an explicit order for the csv
            // row is an object with unordered keys!
            rowarray = [];
            for (var j=0;j<fieldnames.length;j++) {
                rowarray.push(row[fieldnames[j]]);
            }
            csvs.push(array2csv(rowarray, quotechar, sepchar));
        }
        csvstring = csvs.join('\r\n');
        // csvstring should now contain a multirow csv string
    });
});
函数csvQuoteCell(单元格、引号、sepchar){
//包含sepchar和双引号字符的引号单元格
//这是一种excel方言
var=单元格;
if(cell.indexOf(sepchar)!=-1){
如果(单元格索引of(quotechar)!=-1{
quoted=quoted.替换(quotechar,quotechar+quotechar);
}
quoted=quotechar+quotechar+quotechar;
}
返回报价;
}
函数array2csv(ar、quotechar、sepchar){
引用的var=[];

对于(var i=0;i,某种flash或java小程序垫片,或者您的设备提供的某些专有API。

您指的是Web SQL数据库吗?
window.openDatabase()
?是的,这就是我的意思。我说的是浏览器中的sql存储。这里有一个链接。你能创建那个文件然后通过ftp发送吗?除非你的浏览器环境有一些ftp扩展名,很可能没有。但是,你可以通过
XMLHttpRequest
,通过
openDatabase行HTTP POST或放置它('mydb'、'1.0'、'thedatabase',1024*1024);
这是固定了数据库的大小和限制,还是能够容纳超过该大小的条目总数?