Bash - SQL查询输出到变量

12

我是一个新手,在学习bash脚本。我想把SQL查询的结果保存在变量中,但是实际上每次查询都必须连接到MySQL,使用如下命令:

mysql -u $MYUSER -p$MYPASS -D database

并希望将每个输出保存在单独的变量中。

示例查询为:SELECT domain FROM domains WHERE user='$USER'

转换为:

想要将每个结果分别保存在不同的变量中。

示例查询为:SELECT domain FROM domains WHERE user='$USER'

$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT

谢谢你

3个回答

29

参考自bash脚本 - 将查询结果读入变量中,您可以将查询结果读入变量中。

示例

mysql> SELECT * FROM domains;
+-------+---------+
| user  | domain  |
+-------+---------+
| user1 | domain1 |
| user2 | domain2 |
| user3 | domain3 |
+-------+---------+

使用方法

$ myvar=$(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ echo $myvar
domain1 domain2 domain3

echo是用于输出的bash命令。您可以使用拆分$myvar为单独变量

$ read var1 var2 var3 <<< $myvar
$ echo $var1
domain1
$ echo $var2
domain2

你可以将这两个命令合并为一个:

read var1 var2 var3 <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")

可以将结果存储到数组中(如果您不知道有多少条记录,则非常有用):

$ read -ra vars <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ for i in "${vars[@]}"; do
$     echo $i
$ done
domain1
domain2
domain3

2
另一种方法是:
dbquery=`mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains"`      
dbquery_array=( $( for i in $dbquery ; do echo $i ; done ) )

第一行将查询的所有输出存储在一个类似数组的变量dbquery中。第二行使用简单的for循环将dbquery转换为数组dbquery_array

2

我做了这个

变量 = mysql -u root -ppassworrd database << EOF select MAX(variable) AS a from table where variable2 = 'SOMETEXT' AND day(datevalue) >= 22; EOF

希望这有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接