簡體   English   中英

在 Bash 中循環遍歷 mysql 的結果集 - 例程

[英]Loop through result set of mysql in Bash - routines

我想為我的每個例程制作特定的.sql文件。

#!/bin/bash

 routine_names=$(mysql mydb  --execute="SELECT 
    *
FROM
    information_schema.routines
WHERE
    routine_type = 'PROCEDURE' OR routine_type ='FUNCTION'
        AND routine_schema = 'mydb';"|cut -f1)

for routine in "$routine_names"
do
    if [ -e "${routine}.sql" ]
     then
    echo "ok"
    else
     content_procedure=$(mysql mydb--execute="SHOW CREATE PROCEDURE $routine;")
     echo "$content_procedure" >> masoud.txt
   fi   
done 

我的routine_names變量是我的程序列表。 像這樣:

SP_ONE
SP_TWO
SP_THREE

我想循環這些結果。 但我認為結果不是數組。 因為routine變量有所有的內容。

()包裹你的mysql mydb ...命令

 routine_names=($(mysql mydb  --execute="SELECT 
    *
FROM
    information_schema.routines
WHERE
    routine_type = 'PROCEDURE' OR routine_type ='FUNCTION'
        AND routine_schema = 'mydb';"|cut -f1))

我很好奇,從這里得到了這個想法。

另一種情況我如何解決我的問題

#!/bin/bash
mysql -u USER -p -h localhost -D database1 -e "SELECT ID FROM prodTable WHERE display=1 AND new=1 AND exDate<DATE_SUB(CURDATE(),INTERVAL 2 YEAR)" | while read ID;
do 
      echo "The following product has been moved: $ID"
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM