在 Google Apps 中查询 MySql 多个语句

Posted

技术标签:

【中文标题】在 Google Apps 中查询 MySql 多个语句【英文标题】:MySql multiple statements in query in Google Apps 【发布时间】:2021-01-02 22:17:51 【问题描述】:

我正在使用 Google Apps 脚本连接到我的 mysql 数据库并运行查询。我正在使用“标准”var conn = Jdbc.getCloudSqlConnection (dbUrl, user, userPwd)stmt.executeQuery(QUERY)。这一切都很好。我现在需要运行多个查询,例如SET @DateFrom='2020-12-01'; SET @DateTo='2020-12-31'; SELECT * FROM database WHERE MyDate BETWEEN @DateFrom AND @DatoTo。但这在 GAS 中失败了,我还没有找到运行多个查询的方法。甚至可能吗?谢谢!

【问题讨论】:

您可以在 MySQL 服务器上使用一系列多条语句创建一个存储过程,然后使用 Google Apps 脚本中的 CALL 语句调用该存储过程。 感谢@TheAddonDepot,但我真的希望能够在 Google 表格中编写查询(我们广泛使用它)。 【参考方案1】:

通过一些试验和错误想出如何做到这一点。 您需要执行多个stmt.executeQuery(QUERY) - 每个查询一个(显然)。

我首先创建了一个函数来清理字符串并将其拆分为一个数组:

 function oTrimAndSplit(inputString, delimiter) 
  var trimmed = inputString.trim();
  var length = trimmed.length;
  if (trimmed.slice(-1) == ";") trimmed = trimmed.slice(0, -1);
  var arr = trimmed.split(delimiter);
  return arr;

然后把它包起来:

var conn = Jdbc.getCloudSqlConnection (dbUrl, user, userPwd);
var queries = oTrimAndSplit(QUERY, ';');
queries.forEach(function(queriesElement) 
   stmt.executeQuery(queriesElement)
);

就是这样!

【讨论】:

以上是关于在 Google Apps 中查询 MySql 多个语句的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本/JDBC/MySQL

Google Apps 脚本 setTimestamp 到 mysql 数据库

Google Apps 日历 API 推送事件查询

在 Google Apps 脚本中使用 CloudKit Web 服务 API 查询 CloudKit 公共数据库时的 AUTHENTICATION_FAILED

使用 Google Apps 脚本将查询中的数据加载到 Big Query - 缺少必需参数

Google Apps Script e.namedValues 格式多项选择