2010-12-16 45 views
9

我从命令行(即使用psql)创建PostgreSQL数据库。psql -o不是我所期望的(如何将db响应输出到输出文件)

有我的SQL语句的一些错误,我想找出其中的错误是存在的(太多的对象来填充屏幕缓冲区 - 所以我需要保存thios到文件)

我刚才想关于一切,从使用-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 |三通dbcreate.log

没有一个导致数据翻过闪动画面被记录到文件 - 我该怎么办呢?

+0

你试过'pg_dump'吗? http://www.cyberciti.biz/tips/tag/pg-dump-command – sje397 2010-12-16 10:34:57

+0

'-U'用于指定用户名,它的用途是什么? – 2010-12-16 11:52:56

回答

11

您需要重定向stderr。关于联合国* X和Linux:

psql ... 2>error.log 

或两个输出和错误:

psql ... &>error.log 

上,如果你想调查的错误一一另一方面:

psql -v ON_ERROR_STOP=1 ... 

一有关使用psql执行SQL脚本的有用文章 - here

+0

看起来就像我需要的东西。关于你的其他问题(命令行中的-U选项) - 有没有办法让我可以运行这些命令(比如说bash脚本),完全自动化 - 即没有它提示我输入密码? – skyeagle 2010-12-16 12:25:43

+0

很好的文章BTW。我有书标记在美味! – skyeagle 2010-12-16 12:26:15

+1

使用[.pgpass](http://www.postgresql.org/docs/current/static/libpq-pgpass.html)。 – 2010-12-16 12:33:06