有关在psql中假脱机查询和结果的更多信息

在最近的博客文章SPOOLing pQuery with psql中的结果中 ,我简要地介绍了一些PostgreSQL数据库psql 元命令选项 ,这些命令选项可用于模拟Oracle数据库SQL * Plus 假脱机行为。 在\qecho文章中,我写道:“我无法找到一种方法,无需使用\qecho即可将查询及其结果写入文件。” 幸运的是,自从撰写本文以来,一位同事将我指向了psql选项--log-file (或-L )。

PostgreSQL psql文档指出--log-file / -L选项“除了正常的输出目标外,还将所有查询输出写入文件filename中”。 这个方便的选项将查询及其非错误结果都打印到指定的文件中。 例如,如果我使用命令“ psql -U postgres -LC:\output\albums.txt ”启动psql ,然后运行查询, select * from albums; ,生成的文件C:\output\albums.txt如下所示:

********* QUERY **********
select * from albums;
**************************

           title           |     artist      | year 
---------------------------+-----------------+------
 Back in Black             | AC/DC           | 1980
 Slippery When Wet         | Bon Jovi        | 1986
 Third Stage               | Boston          | 1986
 Hysteria                  | Def Leppard     | 1987
 Some Great Reward         | Depeche Mode    | 1984
 Violator                  | Depeche Mode    | 1990
 Brothers in Arms          | Dire Straits    | 1985
 Rio                       | Duran Duran     | 1982
 Hotel California          | Eagles          | 1976
 Rumours                   | Fleetwood Mac   | 1977
 Kick                      | INXS            | 1987
 Appetite for Destruction  | Guns N' Roses   | 1987
 Thriller                  | Michael Jackson | 1982
 Welcome to the Real World | Mr. Mister      | 1985
 Never Mind                | Nirvana         | 1991
 Please                    | Pet Shop Boys   | 1986
 The Dark Side of the Moon | Pink Floyd      | 1973
 Look Sharp!               | Roxette         | 1988
 Songs from the Big Chair  | Tears for Fears | 1985
 Synchronicity             | The Police      | 1983
 Into the Gap              | Thompson Twins  | 1984
 The Joshua Tree           | U2              | 1987
 1984                      | Van Halen       | 1984
(23 rows)

使用-L时的一个缺点是,任何错误消息都不会写入查询和成功结果写入的文件中。 下一个屏幕快照演示了由于从列名而不是表名进行查询而导致的错误,并且屏幕快照显示了输出文件中出现的内容之后的清单。

20160910-errornottablename-psql

********* QUERY **********
select * from artist;
**************************

使用psql-L选项生成的输出文件显示了错误的查询,但是生成的文件不包含psql终端应用程序中显示的错误消息(“错误:关系“艺术家”不存在”)。 我不知道有什么方法可以轻松地确保将此错误消息写入查询所写入的同一文件。 可能会重定向标准输出和标准错误 ,但是我需要根据-L选项提供的文件-L错误消息重定向到与正在将查询和输出写入的文件不同的文件。

翻译自: https://www.javacodegeeks.com/2016/09/spooling-queries-results-psql-2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值