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]};
4

1 回答 1

0

在我看来,您实际上想要构建诸如将 query_name 映射到 query_string 的字典(关联数组)之类的东西。bash并不是处理复杂数据结构的最佳选择。如果可以的话,我建议使用Perl这种任务。

于 2012-09-02T00:37:22.950 回答