运行 SQL 从命令行循环查询

running a SQL query in a loop from the command line

我有一个相当复杂的查询,我需要 运行 几千次,参数取自另一个 table 列中的值。以任何理智的方式将其编写为简单的 JOIN 太复杂了。

查询的每次执行大约需要 6 秒,因此编写 PHP 脚本来执行此循环可能会使我的网络服务器崩溃。有什么方法可以在 OSX 的命令行中执行此操作? (我意识到这开始进入超级用户领域,我应该在那里问吗?)。

我想做的是:

  1. 运行 从 table1.columnA.
  2. 获取我需要的值的查询
  3. 将这些值 (valueA) 存储到某种数组中。
  4. 迭代这个数组,并对每个值执行我的复杂查询:

INSERT INTO table2 (id, :valueA) SELECT id from table3 WHERE id NOT IN (COMPLEX_SUBQUERY) AND tableXYZ.value = :valueA

最好的解决方案似乎是在某种 shell 脚本中执行此操作,但坦率地说,Unix 脚本对我来说仍然有点黑魔法。我更喜欢在 PHP 中编写 table 脚本,但我想如果我尝试将其作为 PHP 脚本来执行此操作,Apache 会崩溃。

我无法发表评论,但我可以让您知道,您完全可以使用 php 作为命令行脚本语言,而根本不需要网络服务器。

从命令行尝试:php script.php