我知道当你试图将报告写入Oracle SQLplus中的文件时,你会使用spool命令。
MySQL 中的等效命令是什么?
这是我的代码:
set termout off
spool ${DB_ADMIN_HOME}/data/Datareport.log @ ${DB_ADMIN_HOME}/Scripts.Datavalidation/Datareportscript.sql
spool off
exit
如何在 MySQL 中编写它?
在MySQL中,你需要使用命令tee
和 notee
:
tee data.txt;
//SQL sentences...
notee;
tee
data.txt
== spool
data.txt
notee
== spool off
对于 Oracle SQLPlus spool
命令,mysql 命令行客户端中没有等效项。
要从保存到文件的 mysql 命令行客户端获取输出,您可以让操作系统将输出重定向到文件,而不是显示。
在 Unix 中,您可以在命令行上使用>
符号。(这里给出一个如何重定向输出的示例似乎有点多余。
date > /tmp/foo.txt
该>
符号基本上是告诉 shell 获取写入 STDOUT 句柄的内容,并将其重定向到命名文件(如果文件存在,则覆盖该文件),如果您有权限。
问:当您尝试生成报告时,是否在 mysql 中使用set pagesize
和set linesize
?
答:没有。这些是特定于Oracle SQLPlus的。我不知道 mysql 命令行客户端中有任何等效的功能。mysql 命令行客户端在交互模式下运行时具有一些强大的功能(例如 pager
和tee
),但在非交互模式下,它不足以替代SQLPlus。
如果我明白你的要求:
mysql dbname < ${DB_ADMIN_HOME}/Scripts.Datavalidation/Datareportscript.sql
> ${DB_ADMIN_HOME}/data/Datareport.log
使用重定向。