bash - SQL查询输出到变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash - SQL查询输出到变量相关的知识,希望对你有一定的参考价值。

我是bash脚本的新手。我想在变量中保存sql-query输出,但是

实际上我必须连接每个查询到mysql

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

并希望将每个输出保存为单独变量

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

$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT

谢谢

答案

bash script - select from database into variable获取,您可以将查询结果读入变量。

Example

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

Usage

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

echo是输出的bash命令。你可以然后split $myvar into separate variables

$ 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
另一答案

另一种做法是:

dbquery=`mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains"`      
dbquery_array=( $( for i in $dbquery ; do echo $i ; done ) )

第一行以类似数组的方式将查询的所有输出存储在变量qazxsw poi中。第二行将qazxsw poi转换为带有简单dbquery循环的数组dbquery

另一答案

我这样做了

变量= dbquery_array

我希望它有所帮助

以上是关于bash - SQL查询输出到变量的主要内容,如果未能解决你的问题,请参考以下文章

根据 SQL 输出设置 BASH 变量

Bash 脚本将命令输出存储到变量中

My SQL 动态查询执行并将输出输出到存储过程中的变量中

如何避免作为 sql 查询输出的一部分返回的字符串值被拆分为 bash/shell 脚本中数组中的不同字段

SQL Developer 脚本输出到数据网格

根据退出代码bash脚本将命令重定向到变量或文件?