Подтвердить что ты не робот

Как выполнять эхо-печать инструкций при выполнении sql script

У нас есть простой sql script, который нужно выполнить в отношении базы данных MySQL, и нам бы хотелось, чтобы операторы журнала печати отслеживали ход работы script (например, вставили 10 записей в записи foo или Deleted 5 из бара). Как мы это делаем?

  • Я хотел бы знать синтаксис, который будет использоваться для операторов insert/update/delete.
  • Как узнать количество строк, затронутых моими утверждениями.
  • Я также хотел бы управлять печатью их с помощью команды ECHO off или on в верхней части script.
  • script должен быть переносимым в ОС Windows/Linux.
4b9b3361

Ответ 1

Это даст вам простой шрифт в sql script:

select 'This is a comment' AS '';

В качестве альтернативы, это добавит некоторые динамические данные в ваше обновление статуса, если оно используется непосредственно после команды update, delete или insert:

select concat ("Updated ", row_count(), " rows") as ''; 

Ответ 2

Я не знаю, помогает ли это:

Предположим, вы хотите запустить sql script (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, просто используя, обеспечить, чтобы script запускался через командную строку.

\! #terminal_commands

Ответ 3

Чтобы сделать ваш script более читаемым, возможно, используйте этот 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');

Ответ 4

Вы можете использовать print -p - в script для этого примера:

#!/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