2015-02-24 35 views
-1

我如何使用shell腳本存儲在linux下的MySQL數據庫我怎麼能存儲在linux下的MySQL數據庫使用shell腳本

腳本:

mysql -uusername -hhostname -ppassword -e "show databases" 
+0

我想所有的數據庫名稱存儲陣列,使得塔我可以給他們打電話,並使用循環由一個對所有的人一個執行查詢 – 2015-02-24 12:14:14

+0

@adarshhota'shell_exec'是PHP函數,這個問題是關於shell腳本的 – 2015-02-24 12:51:06

回答

0

我想你想要這樣的:http://lists.mysql.com/mysql/96132

mysql> use mysql 
Database changed 
mysql> tee /tmp/mysqltee 
Logging to file '/tmp/mysqltee' 
mysql> show tables; 
+-----------------+ 
| Tables_in_mysql | 
+-----------------+ 
| columns_priv | 
| db    | 
| host   | 
| tables_priv  | 
| user   | 
+-----------------+ 
5 rows in set (0.02 sec) 

mysql> notee 
Outfile disabled. 
mysql> 

如果文件存在,輸出將被追加到現有文件(/ tmp/mysqltee)。

正如您所見,輸出也顯示在屏幕上。這可能不是 你想要什麼,尤其是如果產量大......你可以使用

mysql -e "select table_name from user_tables" database > output.txt 

mysql database <script.sql> output.txt 

從操作系統的命令行。 (您可能還需要使用-u,-p和/或-h,使用 同樣,當你做mysql客戶端的「正常」的開始。)

+0

OP想從shell腳本做到這一點,而不進入mysql本身 – DaveyBoy 2015-02-24 14:58:47

0

它可以幫助你

#!/bin/bash 
results=($(mysql --user root -pwelcome -Bse "show databases;")) 
+0

雖然這段代碼可以解決問題,[包括解釋](http: //meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高你的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – msrd0 2015-02-24 19:44:32

0

以下代碼將檢索名爲dbnames的變量的所有數據庫名稱。在此之後,它迭代只會呼應字符串與每個名稱分別

#!/bin/bash 
dbnames=`mysql --user=user --password=password -se "show databases;"` 

for x in $dbnames; 
do 
    echo "There is a database called $x" 
done; 
+0

如果我只想顯示數據庫名稱的值,應該使用什麼命令,假設第二個數據庫。 – 2015-02-25 05:37:31

+0

*一個數據庫名稱 – 2015-02-25 05:40:02

+0

向腳本引入requiredRow和count變量。通過循環進行每次迭代的遞增計數,並將其與requiredRow值進行比較。使用'requiredRow = $((requiredRow + 1))'執行增量。 – DaveyBoy 2015-02-25 10:29:07