반응형
여러 사람이 동시에 편집해서 사용할 수 있는 구글 스프레드시트에 데이터 베이스를 연동하면 접근성이 좋아짐.
단점은 스프레드시트의 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();
}
반응형