将postgresql存储为bash变量

时间:2013-03-06 08:53:32

标签: bash postgresql variables

如何在bash-variable中存储标量postgresql-value,如下面的脚本?

dbname="testlauf"
username="postgres"

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

我尝试了几种不同的着作,但似乎没有任何作用。提前谢谢。

2 个答案:

答案 0 :(得分:46)

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

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

vartest=`psql -X -A -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT gid FROM testtable WHERE aid='1'"`

答案 1 :(得分: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