2011-09-29 59 views
0

我需要對MySql數據庫進行多次查詢。我的問題是:從shell查詢MySQL數據庫

  1. 添加我在一個文件下面,然後執行該文件:

回聲 「檢查」
的mysql -h 192.168.100.1 -u -t umane -pass表名 < query.sql的
回聲 「檢查」
的mysql -h 192.168.100.1 -u -t umane -pass表名< query2.sql
回聲 「檢查」
的mysql -h 192.168.100.1 -t -u umane -pass表名< query3.sql
呼應 「檢查」
的mysql -h 192.168.100.1 -u -t -pass umane表名< query4.sql

  1. 或者創建一個單一的 「query.sql的」 文件包含所有的sql查詢。如果是這樣,我可以以任何方式迴應「檢查」的聲明?

回答

1
username="my_sql username" 
password="my_sql password" 
result=`mysql -h 192.168.100.1 --port=$port -u $username --password=$password -e 'select * from database.table_name'` 

echo $result 
0

您可以在SQL代碼添加文本(和時間戳)選擇:

% mysql -NBe "select now(); select 'check'; select now();select 'check'" 
2011-09-29 14:46:15 
check 
2011-09-29 14:46:15 
check 

所以你單獨的SQL文件看起來像:

--- queries from sql1... 
SELECT NOW() 
SELECT 'check'; 
-- queries from sql2... 
1

您可以創建一個sql文件,然後添加一些像這樣的SELECT語句

// Does not print anyting 
CREATE TABLE test (col1 int, col2 varchar(2)); 
// Prints a non-existing table with 1 column and 1 row 
SELECT "CHECK 1" AS "Test result"; 
// This does prints some output 
DESCRIBE test; 
// Prints the check 'table' again 
SELECT "CHECK 2" AS "Test result"; 

這樣的結果看起來像

[email protected]:~$ mysql -t -u root databasename < sqltest 
+-------------+ 
| Test result | 
+-------------+ 
| CHECK 1  | 
+-------------+ 
+-------+------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+------------+------+-----+---------+-------+ 
| col1 | int(11) | YES |  | NULL |  | 
| col2 | varchar(2) | YES |  | NULL |  | 
+-------+------------+------+-----+---------+-------+ 
+-------------+ 
| Test result | 
+-------------+ 
| CHECK 2  | 
+-------------+ 

- 編輯,是因爲Dimitre的建議相同

1

放入source.sql所有的SQL語句,你輸出重定向到output.txt的

mysql -t -uuserid -ppassword -hhostname <source.sql> output.txt