我们有一个简单的sql脚本需要针对MySQL数据库执行,我们希望打印脚本进度的日志语句(例如,将10条记录插入foo或从条形图中删除5条记录)。我们怎么做?
答案 0 :(得分:43)
这将使您在sql脚本中进行简单的打印:
select 'This is a comment' AS '';
或者,如果在update
,delete
或insert
命令后直接使用,则会向状态更新添加一些动态数据:
select concat ("Updated ", row_count(), " rows") as '';
答案 1 :(得分:22)
我不知道这是否有帮助:
假设您要从命令行运行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
答案 2 :(得分:5)
只是为了让你的脚本更具可读性,可以使用这个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');
答案 3 :(得分:1)
您可以在脚本中使用print -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
答案 4 :(得分:1)
如何使用mysql -v
将mysql客户端置于详细模式?
答案 5 :(得分:0)
对于mysql,您可以将\ p添加到命令中,以使它们在脚本中运行时打印出来:
SELECT COUNT(*) FROM `mysql`.`user`
\p;
在MySQL客户端中运行它:
mysql> source example.sql
--------------
SELECT COUNT(*) FROM `mysql`.`user`
--------------
+----------+
| COUNT(*) |
+----------+
| 24 |
+----------+
1 row in set (0.00 sec)