Как отобразить операторы печати при выполнении сценария SQL - PullRequest
37 голосов
/ 16 ноября 2011

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

  1. Я хотел бы знать синтаксис, который будет использоваться для операторов вставки / обновления / удаления.
  2. Как узнать количество строк, на которые влияетмое заявление (я).
  3. Я также хотел бы контролировать печать их с помощью команды ECHO off или on в верхней части скрипта.
  4. Скрипт должен быть переносимым в ОС Windows / Linux.

Ответы [ 4 ]

46 голосов
/ 16 ноября 2011

Это даст вам простую печать в сценарии SQL:

select 'This is a comment' AS '';

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

select concat ("Updated ", row_count(), " rows") as ''; 
22 голосов
/ 22 мая 2016

Не знаю, поможет ли это:

предположим, что вы хотите запустить сценарий sql (test.sql) из командной строки:

mysql < test.sql

и содержимое теста.sql имеет видчерез командную строку.

\! #terminal_commands
5 голосов
/ 13 мая 2016

Чтобы сделать ваш сценарий более читабельным, используйте этот процесс:

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');
0 голосов
/ 16 ноября 2011

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...