将postgresql结果存储在bash变量中



如何在bash变量上设置一个标量postgresql值,就像下面的脚本一样?

dbname="testlauf"
username="postgres"
vartest='psql -c -d $dbname -U $username -h localhost -p 5432 "SELECT gid FROM testtable WHERE aid='1';"'
echo "$vartest"

我尝试了几种不同的写作方式,但似乎都没有效果。

-c选项放在其参数-查询之前。还要注意使用额外的-t选项来获取元组值。当然,还要使用反引号( ' )操作符。

还建议使用-X选项,因为有时.psqlrc文件可能会添加一些冗余输出,以及-A选项,该选项禁用列对齐(空白)。

为了跳过NOTICE或其他附加消息,请包含-q标志。

vartest=`psql -d $db -U $user -AXqtc "SELECT gid FROM testtable WHERE aid='1'"`

使用-t选项或——tuples-only将只提供行,因此更容易将它们存储在数组变量中(如果查询的结果不止一个)

vartest =(`psql -t -d $dbname -U $username -c "SELECT gid FROM testtable WHERE aid='1';"`)
echo $vartest

的例子:

查询结果
ubuntu@ratnakri:~$ psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"
barman
barman2

写入数组变量

    ubuntu@ratnakri:~$ RESULT=(`psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"`)
    ubuntu@ratnakri:~$ echo ${RESULT[0]}
    barman
    ubuntu@ratnakri:~$ echo ${RESULT[1]}
    barman2

相关内容

  • 没有找到相关文章