如何让 SQL 查询显示在输出文件中?

如何让 SQL 查询显示在输出文件中?

我尝试从 shell 脚本执行一组查询,同时捕获日志文件中的输入(SQL 查询)和输出。

但输入查询不会与输出一起显示。日志文件中仅捕获输出。有没有办法捕获输入查询以及相应的输入?

我已经设置了echo on,但是还是不行。

答案1

如果您的 shell 脚本是 bash 或 sh,您可以尝试将-x开关附加到 shebang,然后运行该脚本。通常用于调试 shell 脚本,它将在执行之前打印下一行/命令。因此,如果您有下面的示例脚本,该脚本会记录到文件中logfile

#!/bin/bash -x
echo "Hello world!" >> logfile
echo "Second command!" >> logfile

然后您运行脚本,./script 2>> logfile日志文件将如下所示:

+ echo 'Hello world!'
Hello world!
+ echo "Second command!" 
Second command!

答案2

您的 SQL 客户端可能提供在显示结果之前回显查询的选项。例如,mysql有一个-v选项,使用一次后,就可以做到这一点。

输入:

echo "select 1 from dual" | mysql -v --table --user=u --password=p --host=h

输出:

--------------
select 1 from dual
--------------

+---+
| 1 |
+---+
| 1 |
+---+

相关内容