运行 SQL 从命令行循环查询
running a SQL query in a loop from the command line
我有一个相当复杂的查询,我需要 运行 几千次,参数取自另一个 table 列中的值。以任何理智的方式将其编写为简单的 JOIN 太复杂了。
查询的每次执行大约需要 6 秒,因此编写 PHP 脚本来执行此循环可能会使我的网络服务器崩溃。有什么方法可以在 OSX 的命令行中执行此操作? (我意识到这开始进入超级用户领域,我应该在那里问吗?)。
我想做的是:
- 运行 从
table1.columnA
. 获取我需要的值的查询
- 将这些值 (
valueA
) 存储到某种数组中。
- 迭代这个数组,并对每个值执行我的复杂查询:
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
我有一个相当复杂的查询,我需要 运行 几千次,参数取自另一个 table 列中的值。以任何理智的方式将其编写为简单的 JOIN 太复杂了。
查询的每次执行大约需要 6 秒,因此编写 PHP 脚本来执行此循环可能会使我的网络服务器崩溃。有什么方法可以在 OSX 的命令行中执行此操作? (我意识到这开始进入超级用户领域,我应该在那里问吗?)。
我想做的是:
- 运行 从
table1.columnA
. 获取我需要的值的查询
- 将这些值 (
valueA
) 存储到某种数组中。 - 迭代这个数组,并对每个值执行我的复杂查询:
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