【发布时间】:2019-04-27 20:37:56
【问题描述】:
说来话长……
我正在尝试动态生成交叉表查询并将其作为 psql 脚本运行..
为了实现这一点,我希望生成 sql 的最后一行并将其附加到 sql 的顶部。
sql的最后一行是这样的.... "as final_result(symbol character varying,"431" numeric,"432" numeric,"433" numeric);"
其中,“431”、“432”等是动态生成的,因为它们是枢轴列,它们会不时变化...
所以我写了一个查询来输出文本如下......
psql -c "select distinct '"'||runweek||'" numeric ,' from calendar where runweek between current_runweek()-2 and current_runweek() order by 1;" -U USER -d DBNAME > /tmp/gengen.lst
虽然 sql 提供了输出,但当我将其作为脚本运行时,由于特殊字符('、""、),它会失败。
我应该如何让它工作?然后我的计划是遍历“lst”文件并构建数据透视字符串,并将其附加到 sql 的顶部并执行脚本......(postgres 新手,不知道,动态 sql 生成和执行等。 . 但我对 UNIX 脚本很满意..)
如果我能以某种方式得到输出 (“431”数字,“432”数字......等等),如果有建议来实现这一点,将不胜感激......
【问题讨论】:
-
如果你从 shell 运行它(并且引用是你的问题),你可以使用 here-document。
标签: postgresql psql