我正在使用一个带有JDBC连接器的应用程序脚本来创建与我的MySQL统计数据库的连接。我希望能够在一个单一的脚本运行多个查询,以拉出特定的信息从我的数据库到一个单一的工作表中所有我的查询的结果有相同的结构(所有按日期分组)年,月,日,值,我想知道是否有可能有年,月,日期列固定和所有其他结果填充我的结果中的以下列。
如列A:年份,列B:月,列C:日,列D:查询1的结果,列E:查询2的结果....
这是我开始时的想法
function loadData() {
var sheet = SpreadsheetApp.getActiveSheet();
var instanceUrl = 'jdbc:mysql://' + address;
var dbUrl = instanceUrl + '/' + db;
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
var stmt = conn.createStatement();
stmt.setMaxRows(10);
var results = stmt.executeQuery('Select YEAR(dateCreated) as yearAdded,MONTH(dateCreated) as monthAdded, DAY(dateCreated) as dayAdded,sum(amount)/100 from stripeTransactions GROUP BY yearAdded ,monthAdded,dayAdded;');
var numCols = results.getMetaData().getColumnCount();
while (results.next()) {
var rowArray = new Array();
for (var col = 0; col < numCols; col++) {
rowArray.push(results.getString(col+1));
}
sheet.appendRow(rowArray);
}
results.close();
stmt.close();
var stmt2 = conn.createStatement();
stmt2.setMaxRows(10);
var results2= stmt2.executeQuery('Select YEAR(dateAdded) as yearAdded,MONTH(dateAdded) as monthAdded, DAY(dateAdded) as dayAdded,sum(amount) from itunestransactions GROUP BY yearAdded ,monthAdded,dayAdded;');
var numCols2 = results2.getMetaData().getColumnCount();
while (results2.next()) {
var rowArray2 = new Array();
for (var cal = numCols; cal < numCols2; cal++) {
rowArray2.push(results2.getString(cal+1));
}
sheet.appendRow(rowArray2);
}
results2.close();
stmt2.close();
}谢谢(这个脚本只为每个结果添加行,我猜可以为每个查询结果添加一个工作表,然后将每个工作表合并到一个工作表中,但我更愿意从一开始就在一个工作表中执行)
发布于 2017-12-10 01:31:42
您需要了解更高级的MySQL才能做到这一点,但是您可以将子查询嵌套到主查询中。
此外,如果希望查询更高效,可以将查询封装到一个MySQL存储过程中,然后通过JDBC从Apps Script调用该过程。
以下是一些教程的链接,可帮助您快速入门:
https://stackoverflow.com/questions/47729885
复制相似问题