我们有一个简单的sql脚本,需要针对MySQL数据库执行,我们希望在脚本的进度上打印日志语句(例如,将10条记录插入到foo中或删除来自栏的5条记录)。我们如何做到这一点?如何在执行sql脚本时回显打印语句
- 我想知道用于插入/更新/删除语句的语法。
- 我如何知道受我的声明影响的行数。
- 我还想使用脚本顶部的ECHO off或on命令来控制打印它们。
- 该脚本应该可以跨Windows/Linux操作系统移植。
我们有一个简单的sql脚本,需要针对MySQL数据库执行,我们希望在脚本的进度上打印日志语句(例如,将10条记录插入到foo中或删除来自栏的5条记录)。我们如何做到这一点?如何在执行sql脚本时回显打印语句
这会给你是一个SQL脚本中简单的打印:
select 'This is a comment' AS '';
另外,如果在update
,delete
或insert
命令之后直接使用,则会为您的状态更新添加一些动态数据:
select concat ("Updated ", row_count(), " rows") as '';
您可以使用打印-p - 在脚本执行此示例:
#!/bin/ksh
mysql -u username -ppassword -D dbname -ss -n -q |&
print -p -- "select count(*) from some_table;"
read -p get_row_count1
print -p -- "select count(*) from some_other_table;"
read -p get_row_count2
print -p exit ;
#
echo $get_row_count1
echo $get_row_count2
#
exit
只是为了使你的脚本更具可读性,也许用这个PROC:
DELIMITER ;;
DROP PROCEDURE IF EXISTS printf;
CREATE PROCEDURE printf(thetext TEXT)
BEGIN
select thetext as ``;
END;
;;
DELIMITER ;
现在,你可以这样做:
call printf('Counting products that have missing short description');
我不知道如果这能帮助:
假设您想要从命令行运行sql脚本(test.sql):
mysql < test.sql
和TEST.SQL的内容是这样的:
SELECT * FROM information_schema.SCHEMATA;
\! echo "I like to party...";
控制台将显示类似:
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...
这样你就可以只使用执行SQL语句的内部终端命令,提供该脚本通过命令行运行。
\! #terminal_commands
插入,更新,删除命令的语法是否相同? – Joe
我一直在使用它。它工作正常。 – cherouvim
如果必须从某个更新/插入/删除语句中捕获受影响的行数,我该怎么办? – Joe