2

我知道当您尝试将报告写入 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 中编写它?

4

3 回答 3

12

在 MySQL 中,您需要使用命令tee& notee

tee data.txt;
//SQL sentences...
notee;

teedata.txt==spooldata.txt

notee==spool off

于 2017-09-06T05:36:06.087 回答
0

对于 Oracle SQLPlusspool命令,mysql 命令行客户端中没有等效的命令。

要将 mysql 命令行客户端的输出保存到文件中,您可以让操作系统将输出重定向到文件,而不是显示。

在 Unix 中,您>在命令行上使用符号。(这里举一个如何重定向输出的例子似乎有点多余。)

date > /tmp/foo.txt

如果您有权限,该>符号基本上是告诉外壳程序获取写入 STDOUT 句柄的内容并将其重定向到命名文件(如果文件存在,则覆盖该文件)。


问:当您试图生成报告时,是否在 mysql 中使用了和set pagesizeset linesize

答:不可以。这些是特定于 Oracle SQLPlus 的。我不知道 mysql 命令行客户端中的任何等效功能。mysql 命令行客户端在交互模式下运行时具有一些强大的功能(例如pagertee),但在非交互模式下,它不足以替代 SQLPlus。

于 2012-06-25T18:40:07.840 回答
-1

如果我得到你的要求:

mysql dbname < ${DB_ADMIN_HOME}/Scripts.Datavalidation/Datareportscript.sql \
> ${DB_ADMIN_HOME}/data/Datareport.log 

使用重定向。

于 2012-06-25T14:47:12.253 回答