psql -o 不是我预期的(如何将数据库响应输出到输出文件)

10

我正在使用命令行(即使用psql)创建一个PostgreSQL数据库。

在我的SQL语句中存在一些错误,我想找出错误发生的位置(有太多的对象要填充屏幕缓冲区 - 因此需要将其保存到文件中)。

我尝试了几乎所有的方法,包括使用-o选项、-L选项和使用tee,但我仍然无法捕获在屏幕上滚动的信息。

如何记录这个?

这是我目前尝试过的:

  • psql -U -o dbcreate.log -f file.sql
  • psql -U -L dbcreate.log -f file.sql
  • psql -U -a -f file.sql | tee dbcreate.log

以上所有方法都无法将屏幕上闪现的数据记录到文件中 - 我该怎么做?


你尝试过使用 pg_dump 吗?http://www.cyberciti.biz/tips/tag/pg-dump-command - sje397
“-U” 用于指定用户名,在命令行中它有什么作用? - Milen A. Radev
1个回答

15

你需要重定向标准错误输出。在 Unix 和 Linux 上:

psql ... 2>error.log

或者同时包含标准输出和错误输出:

psql ... &>error.log

另一方面,如果你喜欢逐个调查错误:

psql -v ON_ERROR_STOP=1 ...

这里有一篇关于如何使用psql执行SQL脚本的有用文章 - here.


看来正是我需要的。关于你的另一个问题(命令行上的-U选项)-是否有一种方式可以完全自动化地运行这些命令(比如从bash脚本中),而无需提示我输入密码? - skyeagle
实际上,在向您询问之前,我已经在PostgreSQL文档中看到了这个(内容)。问题是我找不到任何如何使用它的示例。除非“使用它”只涉及在.pgpass文件中输入用户的详细信息? - skyeagle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接