2012-09-01 91 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這種任務。