📜  postgres 输出到 bash 变量 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:18:38.142000             🧑  作者: Mango

在Shell脚本中将PostgreSQL查询结果输出到Bash变量

本文将向您介绍如何使用Shell脚本将PostgreSQL数据库查询结果输出到Bash变量中。我们将通过以下步骤实现这个目标:

  1. 使用psql命令连接到PostgreSQL数据库。

  2. 在psql命令的末尾添加SELECT语句以获取所需的查询结果。

  3. 使用管道符将查询结果传递到awk命令,以便可以将结果格式化为Bash变量的形式。

连接到PostgreSQL数据库

首先,我们需要使用psql命令连接到PostgreSQL数据库。下面是连接到PostgreSQL数据库的命令:

psql -U <username> -d <database_name>

其中,<username>是您在PostgreSQL数据库中使用的用户名,<database_name>是您要连接的数据库的名称。在连接成功之后,会进入psql交互式命令行。

执行查询语句

一旦连接到数据库,我们就可以执行任何查询语句了。下面是一个例子:

SELECT first_name,last_name,email FROM users;

这是一个获取users表中所有用户的first_namelast_nameemail字段的查询语句。

将查询结果输出到Bash变量

接下来,我们将使用管道符将查询结果传递到awk命令中,并格式化为Bash变量的形式。下面是完整的命令:

user_info=$(psql -U <username> -d <database_name> \
-c "SELECT first_name,last_name,email FROM users" \
| awk 'NR>2{print "user_"NR-2"="$1" "$2" "$3";"}')

其中,user_info是一个Bash变量,它包含查询结果。整个命令的解释如下:

  • $(...)将括号内的命令的输出作为字符串返回。这是将结果存储在Bash变量中的关键步骤。

  • psql -U <username> -d <database_name> -c "SELECT first_name,last_name,email FROM users"执行查询语句并将结果作为标准输出返回。

  • awk 'NR>2{print "user_"NR-2"="$1" "$2" "$3";"}'使用awk命令对结果进行处理。NR>2表示跳过前两行输出,因为这些行是psql命令和查询结果的标头。然后,awk命令将输出格式化为Bash变量的形式。例如,如果有三个用户,将输出为:

user_1=John Doe jdoe@email.com;
user_2=Alex Smith asmith@email.com;
user_3=Alice Johnson ajohnson@email.com;

最后,Bash变量user_info将包含查询结果。

结论

现在,您已经知道如何使用Shell脚本将PostgreSQL查询结果输出到Bash变量中。这个技巧对于需要在Shell脚本中使用PostgreSQL的程序员来说非常有用。