相关文章推荐
面冷心慈的草稿纸  ·  Java ...·  2 年前    · 
发呆的猴子  ·  Hangfire.AspNetCore.dl ...·  2 年前    · 

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 “$”)

echo $hive_table

for table in $hive_table

echo $table

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

$MYSQL_ETL “$” >temp.txt

tempt=$(cat temp.txt)

for table in $tempt

echo $table

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

res=””

cat temp.txt | while read line

res=`echo $line |awk ''`

echo $line

echo $res

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

while read line

res=`echo $line |awk ''`

echo $line

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

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

文章转载: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/