将Postgres查询的结果直接存储到Bash 4中的数组中?

时间:2017-06-19 02:45:20

标签: bash postgresql

我正在尝试运行如下的Postgres查询并将结果存储到数组中:

v2_ids=$(psql $(credstash get database/path/here) -tc "select distinct(user_id) from table where yada yada yada..." )

read -a arr_ids_temp <<< $v2_ids

有更好的方法吗?似乎读取-a有时只抓取第一个结果,我不知道为什么。

2 个答案:

答案 0 :(得分:1)

请参考以下代码:

IFS=$'\n' res=(`psql -tA database username -c 'select column_name from table_name where blah blah...'`)
  • 我们必须告诉bash将结果存储在基于'\ n'分隔符的数组中。
  • psql选项-tA,用于删除页眉/页脚等,并删除前导和尾随空格。

$ {res [0]}包含第一行的值和数组中的每个元素 分别包含每一行的值。

其他提示:

要将一行中的所有数据都放入数组,

IFS='|' res=(`psql -tA database username -c 'select name1,name2,name3 from table_name where blah blah...'`)
  • 在这里,我告诉bash将psql结果存储在基于|的数组中。定界符。

答案 1 :(得分:0)

这应该可以正常工作,但是使用psql选项-A(未对齐输出模式),-q(抑制信息输出)和-t(没有列名,页眉和页脚)。