Google App Script - 如何在 JDBC 查询中加入多个数据库
Posted
技术标签:
【中文标题】Google App Script - 如何在 JDBC 查询中加入多个数据库【英文标题】:Google App Script - How to join multiple databases in JDBC query 【发布时间】:2020-01-04 19:50:45 【问题描述】:是否可以通过 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);
```
【问题讨论】:
我猜尝试声明两个单独的连接 conn1 和 conn2 @Cooper 试过了——问题变成了在“var stmt = conn.prepareStatement()”区域中声明两个连接。不知道我将如何将这两个变量连接到该语句...... 【参考方案1】:解决方案是在 MySQL 中创建一个存储过程。您可以在那里链接数据库,创建复杂的查询,然后使用与保存存储过程的数据库的单个连接来调用 JDBC 查询中的过程。
这对我有用。
相关资料链接:
开发 MySQL 站点:MySQL Stored Procedure
MySQL 教程:MySQL Stored Procedure
【讨论】:
以上是关于Google App Script - 如何在 JDBC 查询中加入多个数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何收听Telegram Bot错误? (Google App Script + Webhooks)
Google App Script - 如何在 JDBC 查询中加入多个数据库
在Google-App-Script for Google云端硬盘中如果标题包含某个字词,如何将某些文件从root移动到某个文件夹?
如何向 Google Apps Script Web App 发送有效的 HTTP 请求?