使用 shell 脚本在变量上存储 PostgreSQL 查询

Bea*_*ind 2 postgresql shell

我想将以下 postgreSQL 查询结果存储在变量中。我正在 shell 脚本上编写命令。

psql -p $port -c "select pg_relation_size ('tableName')" postgres
Run Code Online (Sandbox Code Playgroud)

我需要变量将结果保存在文件中。我尝试过以下操作,但不起作用

var= 'psql -p $port -c "select pg_relation_size ('tableName')" '
Run Code Online (Sandbox Code Playgroud)

joo*_*oop 5

使用如下 shell HERE document

#!/bin/sh
COUNT=`psql -A -t -q -U username mydb << THE_END
SELECT count (DISTINCT topic_id) AS the_count
FROM react
THE_END`

echo COUNT=${COUNT}
Run Code Online (Sandbox Code Playgroud)
  • 整个psql <<the_end ... stuff here ... the_end语句都包含在反引号中
  • COUNT反引号内的语句执行的输出用作shell 变量的值
  • 需要 -A -t -q 来抑制列标题和错误输出
  • 在此处文档中,shell 变量替换可以工作,即使在单引号中也是如此!

所以,你甚至可以这样做:

#!/bin/sh

DB_NAME="my_db"
USR_NAME="my_name"
TBL_NAME="my_table"
COL_NAME="my_column"

COUNT=`psql -A -t -q -U ${USR_NAME} ${DB_NAME} << THE_END
SELECT COUNT(DISTINCT ${COL_NAME} ) AS the_count
FROM ${TBL_NAME}
THE_END`

echo COUNT=${COUNT}
Run Code Online (Sandbox Code Playgroud)