반응형

여러 사람이 동시에 편집해서 사용할 수 있는 구글 스프레드시트에 데이터 베이스를 연동하면 접근성이 좋아짐.

 

단점은 스프레드시트의 appscript에서 각 함수가 실행 되는 시간을 max 30분으로 지정했는데

 

데이터의 양이 많아지면 time out으로 강제 종료 될 수 있음.

 

var connectionName = 'database_address:3306'; // 접속할 MySQL 서버의 IP와 Port(Default:3306)
var user = 'userID'; // MySQL 유저 ID
var userPwd = 'password'; // MySQL 유저 PW
var db = 'db_name'; // 접속할 MySQL DB명
var instanceUrl = 'jdbc:mysql://' + connectionName;
var dbUrl = instanceUrl + '/' + db + '?characterEncoding=UTF-8';

function exportDatabase() {
  query="select * from table"
  var start = new Date();
  var conn = Jdbc.getConnection(dbUrl, user, userPwd); // DB 연결
  var stmt = conn.createStatement();
  stmt.setMaxRows(5000);
  var results = stmt.executeQuery(query); // 쿼리
  var metaData = results.getMetaData()
  var numCols = metaData.getColumnCount();
  var sheetname = SpreadsheetApp.getActive();
  var sheet = sheetname.getSheetByName('sheet1');
  sheet.clearContents();

  var arr = [];
  for (var col = 0; col < numCols; col++) {
    arr.push(metaData.getColumnName(col + 1));
  }
  sheet.appendRow(arr); #write header

  while (results.next()) {
    arr=[];
    for (var col = 0; col < numCols; col++) {
    arr.push(results.getString(col + 1));
    } 
    sheet.appendRow(arr); #write data line by line
  }

  var end = new Date();
  Logger.log("Time spend : "+((end - start)/(1000*60) % 60).toFixed(3)+" min");
  //sheet.autoResizeColumns(1, numCols+1);

  results.close();
  stmt.close();
}

 

반응형

+ Recent posts