是否可以通过GAS查询加入多个数据库?我可以成功地跨表联接数据,但无法弄清楚如何联接数据库。
这是我的联接表脚本。我需要添加/更改什么才能将此查询连接到另一个数据库表(数据库位于同一服务器上)。
var docs = SpreadsheetApp.getActiveSpreadsheet();
var sheet = docs.getSheetByName('sheet1');
var protocol = docs.getSheetName();
var siteName = docs.getName();
var conn = Jdbc.getConnection('jdbc:mysql://ip:port/database', 'foo', 'bar');
var stmt = conn.prepareStatement("select a.ex, a.ex2, a.ex3, b.ex1, b.ex2 from table1 a join table2 b on a.ex = b.ex;");
var start = new Date(); // Get script starting time
var rs = stmt.executeQuery();
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheets = docs.getSheetByName('sheet1');
var cell = sheets.getRange('C1');
var row = 0;
var getCount = rs.getMetaData().getColumnCount();
for (var i = 0; i < getCount; i++){
cell.offset(row, i).setValue(rs.getMetaData().getColumnName(i+1));
}
var row = 1;
while (rs.next()) {
for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
cell.offset(row, col).setValue(rs.getString(col + 1));
}
row++;
}
rs.close();
stmt.close();
conn.close();
var end = new Date(); // Get script ending time
Logger.log('Time elapsed: ' + (end.getTime() - start.getTime())); // To generate script log. To view log click on View -> Logs.
Logger.log(protocol);
Logger.log(rs);
}```
解决方案是在MySQL中创建存储过程。您可以在此处链接数据库,创建复杂的查询,然后使用与保存该存储过程的数据库的单一连接在JDBC查询中调用该过程。
这对我有用。
到相关材料的链接:
Dev MySQL网站:MySQL Stored Procedure
MySQL教程:MySQL Stored Procedure