我們有一個簡單的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