2012-09-01 67 views
1

我有一个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]}; 

回答

0

看起来像你对我真的想建立的东西像一个字典(关联数组)映射query_name到query_string。 bash并不是处理复杂数据结构的最佳选择。如果这是一个选项,我建议使用Perl这种任务。