bash - 将 PostgreSQL 通知重定向到 Bash 数组

标签 bash postgresql

我有一个发出通知的 PostgreSQL 语句。我希望将此输出重定向到 bash 数组中。我尝试过以下方法:

declare -a MYARRAY
MYARRAY=( `psql -U $db_username -h $DATABASE_HOST $DATABASE_NAME -c \
"DO \\$\\$ DECLARE
mySite varchar;
myResult RECORD;

BEGIN
    RAISE NOTICE 'current_site, folder, path'; 
    FOR mySite IN SELECT name from public.app_info
    LOOP
        {Confidential Data here!}
    LOOP
        RAISE NOTICE '%,%,%', myResult.current_site, myResult.folder, myResult.path;
    END LOOP;
  END LOOP;
END\\$\\$"` )

echo "These are the files"
for i in ${MYARRAY[@]}; do
        echo $i
done

当我运行脚本时,查询中的通知会打印到我的窗口中,但不会添加到数组中。我也尝试过使用变量而不是数组,但没有成功。

最佳答案

通知已打印到 stderr 中,因此请更改 END\\$\\$"` )END\\$\\$"2>&1` ) 但数组还将包含“NOTICE:”和“DO”等文本,因此您必须将它们过滤掉

关于bash - 将 PostgreSQL 通知重定向到 Bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49792912/

相关文章:

bash - PS1 格式的文档

sql - 如何更改 "WHERE startdate >= date"子句的值并获取日期范围内的数据?

database - 数据库中不可编辑的字段

android - -bash : android: command not found on Mac OSX

bash - 如何防止 ed 打印匹配结果?

linux - 如何在 Bash 中从文件创建用户?

linux - 如何获得否。与文件夹中所有文件中的字符串匹配的行数

sql - Postgres 更新与默认

postgresql - 加载具有依赖关系的 Postgres 函数

mysql - 字符串前后的通配符 - MySql、PSQL