读取具有多个列的MySQL结果集,并自动将其分配给相应的列名作为变量

时间:2019-05-31 05:11:25

标签: mysql shell

我有一个如下所示的mysql表

+------------+-------------+------+-------------+
| encryption | login_path  | port | backup_code |
+------------+-------------+------+-------------+
| NULL       | mysqlbackup | 3306 | BAK_5_9     |
|            | mysqlbackup | 3306 | BAK_22_04   |
| NULL       | mysqlbackup | 3306 | BAK_0_4     |
| NULL       | mysqlbackup | 3306 | bak_1_04    |
| NULL       | mysqlbackup | 3306 | BAK_2_14    |
| NULL       | mysqlbackup | 3306 | BAK_0_4     |
|            | mysqlbackup | 3306 | BAK_23_04   |
| no         | mysqlbackup | 3306 | bak_01_0    |

我想使用shell脚本来触发查询以获取具有列名和相应值的结果。我想遍历每一行,并将列名作为变量,并将相应的列值分配为其值,如下所示

所以当我回显“ $ encryption”时,它应该输出“ NULL”,而$ login_path应该输出“ mysqlbackup”

我已经使用下面的代码获取结果了

mysql -NBe "SELECT CONCAT_ws('@$@', encryption,login_path,port,backup_code) FROM test" | while IFS='@$@' read -r  encryption login_path port backup_code;
do
    echo "$encryption $login_path $port $backup_code"
done

现在我想要实现的是这个。我将mysql查询更改为

mysql -NBe "SELECT * FROM test" | while IFS='@$@' read -r  * ;
do
    echo "$encryption $login_path $port $backup_code"
done

是否可以使用shell脚本自动识别所有列名并为其分配相应的值

0 个答案:

没有答案