Как выполнять эхо-печать инструкций при выполнении sql script
У нас есть простой sql script, который нужно выполнить в отношении базы данных MySQL, и нам бы хотелось, чтобы операторы журнала печати отслеживали ход работы script (например, вставили 10 записей в записи foo или Deleted 5 из бара). Как мы это делаем?
- Я хотел бы знать синтаксис, который будет использоваться для операторов insert/update/delete.
- Как узнать количество строк, затронутых моими утверждениями.
- Я также хотел бы управлять печатью их с помощью команды ECHO off или on в верхней части script.
- script должен быть переносимым в ОС Windows/Linux.
Ответы
Ответ 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