You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku psql CLI中执行\pset元命令后再运行查询?

解决Heroku CLI psql无法使用\pset tuples_only或-t参数的问题

以下几种方法可以绕过Heroku CLI的限制,直接获取原生psql的输出格式:

方法1:直接用本地psql连接Heroku数据库(推荐)

Heroku会提供数据库的连接URL,你可以直接用本地安装的psql客户端连接,这样就能使用所有原生psql的参数:

  1. 获取数据库连接URL:
heroku config:get DATABASE_URL
  1. 直接带参数执行查询:
psql $(heroku config:get DATABASE_URL) -t -c 'select 1'

或者将URL存入变量避免重复获取:

DB_URL=$(heroku config:get DATABASE_URL)
psql "$DB_URL" -t -c 'select 1'

这种方法完全绕过Heroku CLI的psql封装,所有原生psql的选项(包括\pset tuples_only、-t等)都能正常使用,适合频繁执行查询的场景。

方法2:通过heroku run在dyno上执行原生psql

利用heroku run在应用的dyno中直接调用psql命令,这样可以使用原生参数:

heroku run "psql $DATABASE_URL -t -c 'select 1'"

如果需要执行多行命令(比如先设置tuples_only再查询),可以用here-doc:

heroku run bash <<EOF
psql \$DATABASE_URL <<SQL
\pset tuples_only
select 1;
SQL
EOF

注意:这种方法会启动一个临时dyno,若超出免费额度可能产生少量费用,适合偶尔执行的场景。

方法3:使用heroku psql的-f选项读取标准输入

之前的管道输入失败是因为没有指定-f -(表示从标准输入读取命令脚本),加上该选项即可:

printf '\pset tuples_only\nselect 1;\n' | heroku psql -f -

或者用echo:

echo -e '\pset tuples_only\nselect 1;' | heroku psql -f -

这样Heroku CLI会将标准输入的内容作为psql命令脚本执行,而不是当成数据库名。


内容的提问来源于stack exchange,提问作者Ciro Santilli OurBigBook.com

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:18:15