2011-11-16 30 views
28

Chúng ta có một kịch bản lệnh sql đơn giản cần được thực hiện dựa trên cơ sở dữ liệu MySQL. 5 bản ghi từ thanh). Chung ta se lam như thê nao?Làm thế nào để echo các câu lệnh in trong khi thực thi một kịch bản sql

  1. Tôi muốn biết cú pháp được sử dụng để chèn/cập nhật/xóa câu lệnh.
  2. Làm cách nào để biết số hàng bị ảnh hưởng bởi (các) tuyên bố của tôi.
  3. Tôi cũng muốn kiểm soát việc in chúng bằng cách sử dụng hoặc tắt ECHO ở đầu tập lệnh.
  4. Tập lệnh phải di động trên Windows/Linux OS.

Trả lời

32

này sẽ cung cấp cho bạn là in đơn giản trong một kịch bản sql:

select 'This is a comment' AS ''; 

Ngoài ra, điều này sẽ thêm một số dữ liệu động vào cập nhật trạng thái của bạn nếu được sử dụng trực tiếp sau số update, delete hoặc insert lệnh:

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

Cú pháp này có giống với các lệnh chèn, cập nhật, xóa không? – Joe

+0

Tôi đã sử dụng cái này. Nó hoạt động tốt. – cherouvim

+0

Tôi nên làm gì nếu tôi phải chụp số hàng bị ảnh hưởng từ một tuyên bố cập nhật/chèn/xóa nhất định. – Joe

1

Bạn có thể sử dụng in -p - trong kịch bản để làm ví dụ này:

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

Tôi nghi ngờ có nhiều người đã cài đặt 'ksh'. – Blender

+0

Tôi cũng nên đề cập rằng tập lệnh này có thể được chạy từ môi trường Windows hoặc Linux – Joe

5

Chỉ cần để làm cho kịch bản của bạn dễ đọc hơn, có thể sử dụng proc này:

DELIMITER ;; 

DROP PROCEDURE IF EXISTS printf; 
CREATE PROCEDURE printf(thetext TEXT) 
BEGIN 

    select thetext as ``; 

END; 

;; 

DELIMITER ; 

Bây giờ bạn chỉ có thể làm:

call printf('Counting products that have missing short description'); 
14

Tôi không biết nếu điều này giúp:

giả sử bạn muốn chạy tập lệnh sql (test.sql) từ dòng lệnh:

mysql < test.sql 

và các nội dung của test.sql là một cái gì đó như:

SELECT * FROM information_schema.SCHEMATA; 
\! echo "I like to party..."; 

Giao diện điều khiển sẽ hiển thị một cái gì đó như:

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... 

để bạn có thể thực hiện các lệnh terminal bên trong một tuyên bố sql bằng cách chỉ sử dụng, cung cấp kịch bản được chạy thông qua một dòng lệnh.

\! #terminal_commands 
Các vấn đề liên quan