按行讀取sql結(jié)果:
相當(dāng)于把行的結(jié)果保存到一個(gè)數(shù)組,使用數(shù)組下標(biāo)訪問數(shù)據(jù)庫結(jié)果集的各列
while read -a row
do
echo "..${row[0]}..${row[1]}..${row[2]}.."
done < <(echo "SELECT A, B, C FROM table_a" | mysql database -u $user -p $password)
將sql執(zhí)行結(jié)果讀取到shell變量中:
while read a b c
do
echo "..${a}..$..${c}.."
done < <(echo "SELECT A, B, C FROM table_a" | mysql database -u $user -p $password)
注意: done< < 這樣才是正確寫法,done和第一個(gè)<之間沒有空格,兩個(gè)<之間有一個(gè)空格!
在linux下用shell腳本讀取mysql結(jié)果集各數(shù)據(jù)項(xiàng)的值,按行讀取sql結(jié)果,將sql執(zhí)行結(jié)果讀取到shell變量中,然就可進(jìn)行處理。
HOSTNAME="172.16.xx.xx" #數(shù)據(jù)庫信息
PORT="3306"
USERNAME="root"
PASSWORD="root"
DBNAME="log" #數(shù)據(jù)庫名稱
TABLENAME="student"
COMMAND1="mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME}
方法一:
while read -a row
do
echo "..${row[0]}..${row[1]}.."
done< <(echo "select id ,name from student;" | ${COMMAND1})
方法二:
while read a b
do
echo "..${a}..$.."
done< <(echo "select id ,name from student;" | ${COMMAND1})
注釋:注意"done< <("的寫法,第一個(gè)"<"要和"done"之間沒空格,兩個(gè)"<"之間有一個(gè)空格,"<" 和"("之間沒空格。