【问题标题】:Run Postgres File from Command Line (Without actually printing out code)从命令行运行 Postgres 文件(不实际打印代码)
【发布时间】:2016-04-25 02:17:50
【问题描述】:

我可以按照此处的说明从命令行成功运行 SQL (Postgres) 文件:

Run a PostgreSQL .sql file using command line arguments

特别是,我使用类似的东西

psql -d DBPASSWORD -a -f FILENAME

问题是这个(特别是,我相信-a)将sql代码打印到终端。这很烦人,因为我正在使用subprocess 在 Python 脚本中按顺序运行大量文件,而且我宁愿不在终端中打印 SQL 代码。有没有办法不将 SQL 代码打印到终端?

编辑:我已经尝试像人们所说的那样添加 -q 选项,但 SQL 文件中的代码仍在打印到终端。

我尝试的是

psql -q -d DBPASSWORD -a -f FILENAME 
psql -d DBPASSWORD -q -a -f FILENAME 
psql -d DBPASSWORD -a -q -f FILENAME 
psql -d DBPASSWORD -a -f FILENAME -q

在每种情况下,FILENAME 中的代码都会打印到终端

【问题讨论】:

  • 你运行的是什么操作系统?如果是某种 UNIX,您可以将输出重定向到 /dev/null,例如 'psql -d foo > /dev/null'。
  • --quiet-q 应该这样做:postgresql.org/docs/9.3/static/app-psql.html
  • 也许是 -q / -quiet 选项?
  • @Vincent 这将属于这一类。 :-) 但也许像其他人建议的那样 -q 更好。
  • 似乎不起作用?我试过psql -q -d DBPASSWORD -a -f FILENAMEpsql -d DBPASSWORD -q -a -f FILENAMEpsql -d DBPASSWORD -a -q -f FILENAMEpsql -d DBPASSWORD -a -f FILENAME -q无济于事。

标签: macos postgresql


【解决方案1】:

您可能希望将STDOUTSTDERR 或两者都重定向到日志文件。

类似于其中之一的东西

  • psql ... > out.log
  • psql ... 2> err.log
  • psql ... &> out_and_err.log

【讨论】:

  • 有趣。因此,如果我运行psql -d DBPASSWORD -f FILENAME -q &> out_and_err.log,这会将STDOUTSTDERR 都重定向到日志文件?
  • 没错,您甚至不需要-q 选项来获取日志文件中的完整详细信息。您还可以将>2> 组合在一起,在一个文件中出现错误,而在另一个文件中定期输出。
  • psql -d DBPASSWORD -f FILENAME -q &> out_and_err.log 给出错误 TypeError: bufsize must be an integer
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2011-04-16
  • 2018-07-24
  • 1970-01-01
相关资源
最近更新 更多