如何在执行sql脚本时回显print语句

Joe*_*Joe 38 mysql sql

我们有一个简单的sql脚本需要针对MySQL数据库执行,我们希望在脚本的进度上打印日志语句(例如,将10条记录插入foo或从条形图中删除5条记录).我们如何做到这一点?

  1. 我想知道用于插入/更新/删除语句的语法.
  2. 我如何知道受我的陈述影响的行数.
  3. 我还想控制在脚本顶部使用ECHO off或on命令打印它们.
  4. 该脚本应该可以在Windows/Linux OS上移植.

bla*_*out 48

这将使您在sql脚本中进行简单的打印:

select 'This is a comment' AS '';
Run Code Online (Sandbox Code Playgroud)

或者,这将一些动态数据添加到您的状态更新,如果后直接使用update,deleteinsert命令:

select concat ("Updated ", row_count(), " rows") as ''; 
Run Code Online (Sandbox Code Playgroud)

  • 这增加了额外的空白行。有没有多余的行做到这一点的方法? (2认同)

Cra*_*yne 24

我不知道这是否有帮助:

假设您要从命令行运行sql脚本(test.sql):

mysql < test.sql
Run Code Online (Sandbox Code Playgroud)

和test.sql的内容是这样的:

SELECT * FROM information_schema.SCHEMATA;
\! echo "I like to party...";
Run Code Online (Sandbox Code Playgroud)

控制台将显示如下内容:

CATALOG_NAME    SCHEMA_NAME            DEFAULT_CHARACTER_SET_NAME      
         def    information_schema     utf8
         def    mysql                  utf8
         def    performance_schema     utf8
         def    sys                    utf8
I like to party...
Run Code Online (Sandbox Code Playgroud)

所以你可以通过使用在sql语句中执行终端命令,提供脚本是通过命令行运行的.

\! #terminal_commands
Run Code Online (Sandbox Code Playgroud)


lrk*_*kwz 8

mysql -v使用将 mysql 客户端置于详细模式怎么样?


use*_*ess 5

只是为了让你的脚本更具可读性,也许使用这个proc:

DELIMITER ;;

DROP PROCEDURE IF EXISTS printf;
CREATE PROCEDURE printf(thetext TEXT)
BEGIN

  select thetext as ``;

 END;

;;

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

现在你可以这样做:

call printf('Counting products that have missing short description');
Run Code Online (Sandbox Code Playgroud)