将查询结果推送到数组中

时间:2012-09-01 23:40:52

标签: sql bash shell psql

我有一个bash shell脚本。我有一个psql复制命令,它从数据库中捕获了一些数据行。来自数据库的数据是我将在bash脚本中使用的实际sql语句。我将语句放在数据库中,因为它们的长度各不相同,我希望能够动态调用某些语句。

1)我不确定在复制声明中使用什么分隔符。我不能使用逗号或管道,因为它们来自数据库中的数据。我尝试了几个随机字符,因为那些不在我的数据库中,但是复制有一个合适的,只需要一个ascii字符。

同样使我需要为每一行获取query_name和query_string的事情变得复杂。

这就是我现在拥有的。我通过副本获得了所有数据,但现在我只想将数据推送到一个数组中,以便稍后我可以循环它:

q="copy (select query_name,query_string from query where active=1) 
to stdout delimiter ','" 
statements=$(psql -d ${db_name} -c "${q}")
statements_split=(`echo ${statements//,/ }`)
echo ${statements_split[0]};

1 个答案:

答案 0 :(得分:0)

在我看来,你实际上想要构建类似于将query_name映射到query_string的字典(关联数组)。 bash并不是处理复杂数据结构的最佳选择。如果这是一个选项,我建议使用Perl进行此类任务。