mysql不打印select输出到terminal

快速的问题:我已经创build了可以预热我的数据库的命令。 事情是这些select是大的。 当我做这样的select时,我把所有“jiba-jaba”都放到terminal窗口中。 你怎么能让mysql做“安静”的select? 不用花时间把所有的垃圾打印到我的terminal上?

您可以通过使用shell的I / Oredirect操作符来redirect任何命令的输出,而不仅仅是MySQL。 例如,在bash中:

$ mysql mydb < commands.sql > /dev/null 2>&1 

这将启动MySQL命令行客户端,将其连接到本地系统上的“mydb”(假设您有权访问),从文件commands.sql读取SQL commands.sql并将所有输出转储到/dev/null

如果您想在事后保存输出以供查看,则可以将其redirect到文件而不是/dev/null

 $ mysql mydb < commands.sql > output.txt 2>&1 

2>&1redirectstderr以及stdout 。 如果你想在你的terminal上看到任何错误,你只能redirectstdout

 $ mysql mydb < commands.sql > /dev/null 
  1. MySQL的客户端:

     mysql> pager > /dev/null PAGER set to '> /dev/null' mysql> select 1; 1 row in set (0.00 sec) mysql> \q Bye 

    这样查询的结果不会被打印出来,只有行计数一个时间信息。

  2. 在shell中的IOredirect

     user@host$ mysql -e 'select 1' > /dev/null user@host$ 

如果目的是预热caching,你也可以做一些事情:

从mytable中selectmax(concat(col1,col2))…

引擎被迫读取真实页面来计算最大值(无论如何,相对于I / O来说,开销都很小)

请注意,如果仅select索引中的列,则只有索引是红色的,不需要转到表本身(“封面索引”)。
在某些情况下,您可能需要完全相同(只将索引加载到caching中)

这是MySQL的Unix安装工作。 由于Windows在mysql安装中既没有/ dev / null也没有分页程序命令,所以在windows上安装的mysql将不起作用。

在Windows上的Mysql(在Unix上),你可以使用SELECT 1 INTO OUTFILE'file_name'或设置一个variables并使用SELECT 1 INTO @var; 看看这里的文档: http : //dev.mysql.com/doc/refman/5.0/en/select.html

请记住,您不能覆盖outfile,因此INTO Outfile将不适用于重复select。