shell遍历mysql的方式

该博客介绍了如何在Shell脚本中处理MySQL查询结果,提供了四种不同的方法。包括直接将结果赋值给变量、将结果写入文件再读取、按行读取文件以及按字段读取多行数据。每个方法都适用于不同的场景,特别是对于多字段和多行数据的处理。
摘要由CSDN通过智能技术生成

转: https://www.wangt.cc/2017/08/shell-%E9%81%8D%E5%8E%86mysql%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C-%E5%9B%9B%E7%A7%8D%E6%96%B9%E5%BC%8F/

# 定义数据库连接信息
HOST_NAME=localhost
DB_NAME=sima
USER_NAME=suda
PASSWD='111111'
# -s 去掉表头
MYSQL_ETL="mysql -h $HOST_NAME -P4045 -D$DB_NAME -u$USER_NAME -p$PASSWD -s -e"

# 这里是从mysql里查询出来的结果,然后遍历
ssql="SELECT hive_table from sima_sports_event_hive_column where status = 0 GROUP BY hive_table"

 

方式1、直接把结果赋值给变量,然后循环变量(多行多列的结果会变成1行,一个一个遍历)

hive_table=$($MYSQL_ETL “${ssql}”)

echo $hive_table
for table in $hive_table
do
echo $table
done

方式2、把结果放到文件中,然后把文件cat放到变量中(多行多列的结果会变成1行,一个一个遍历)

$MYSQL_ETL “${ssql}” >temp.txt

tempt=$(cat temp.txt)
for table in $tempt
do
echo $table
done

方式3、适用于多个字段的时候按行读取  但是res的不会在循环中被赋值

res=””

cat temp.txt | while read line
do
res=`echo $line |awk '{print $1}'`
echo $line
done
echo $res

方式4、适用于多个字段的时候按行读取,res的会被赋值!

while read line
do
res=`echo $line |awk '{print $1}'`
echo $line
done < temp.txt


注意:mysql查出来放到temp.txt文件里的数据,列之间是 \t 分隔的

而到了 while read line 中, 使用`echo $line |awk  -F” “‘{print $1}’`  默认是按照空格分隔的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值