我知道当您尝试将报告写入 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 SQLPlusspool
命令,mysql 命令行客户端中没有等效的命令。
要将 mysql 命令行客户端的输出保存到文件中,您可以让操作系统将输出重定向到文件,而不是显示。
在 Unix 中,您>
在命令行上使用符号。(这里举一个如何重定向输出的例子似乎有点多余。)
date > /tmp/foo.txt
如果您有权限,该>
符号基本上是告诉外壳程序获取写入 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
使用重定向。