2012-02-07 3 views
0

웹킷 브라우저에서 실행할 응용 프로그램을 작성 중입니다. 장치에 로컬로 저장된 데이터를 가져 와서 .csv 형식으로 내 보내야합니다. 자바 스크립트를 사용하여 가능합니까? 그것은 브라우저에서해야 할 것입니다. PHP는 옵션이 아닙니다. 고마워요웹 SQL을 .CSV 파일로 내보내는 방법

+0

웹 SQL 데이터베이스를 의미합니까? 'window.openDatabase()'? –

+0

네, 그게 무슨 뜻인지. http://www.w3.org/TR/webdatabase/ – Tim

답변

0

sqlite 파일이 서버에 있다고 가정하면 (로컬 저장 장치에 대한 이야기는 아닙니다.), 여전히 서버 측 파일에 액세스해야합니다.

+0

메신저 브라우저에서 SQL 저장 공간에 대해 이야기합니다. 여기에 링크가 있습니다. http://www.w3.org/TR/webdatabase/ – Tim

1

이 작업을 수행 할 수 있지만 직접 자바 스크립트를 csv로 serialize해야합니다. 또한 사용할 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 
    }); 
}); 

그러나 자바 스크립트에서 로컬 파일 시스템으로 해당 파일을 "다운로드"하여 서버에만 업로드 할 수는 없습니다. 정확한 브라우저 환경에 따라 초저가 FileWriter api, 플래시 또는 자바 애플릿 심 (shim) 또는 기기에서 제공하는 일부 독점 API를 사용할 수 있습니다.

+0

해당 파일을 만든 다음 FTP로 보낼 수 있습니까? – Tim

+0

브라우저 환경에 ftp 확장자가 없으면 대부분 그렇지 않습니다. 하지만 HTTP POST 나 PUT은'XMLHttpRequest'로 아주 쉽게 할 수 있습니다. –

관련 문제