psql - save results of command to a file
我正在使用psql的
将psql命令的结果导出到文件的语法是什么?
在psql的帮助下(
\o [FILE] send all query results to file or |pipe
命令序列如下:
1 2 3 4 5 6 7 8 | [wist@scifres ~]$ psql db Welcome TO psql 8.3.6, the PostgreSQL interactive terminal db=>\o OUT.txt db=>\dt db=>\q [wist@scifres ~]$ |
jhwist已经描述了psql
另一种方法是使用
NB!这需要超级用户权限,并将写入服务器上的文件。
示例:
创建一个以";"作为字段分隔符的csv文件。
与往常一样,有关详细信息,请参阅文档
作为postgres命令的
1 | \copy (SELECT * FROM tempTable LIMIT 100) TO 'filenameinquotes' WITH header delimiter AS ',' |
上面将选择查询的输出保存在提供的文件名中,作为csv文件。
编辑:
对于我的psql服务器,以下命令起作用这是一个旧版本的V8.5
1 | copy (SELECT * FROM table1) TO 'full_path_filename' csv header; |
如果出现以下错误
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
;
ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
您可以这样运行它:
psql somepsqllink_or_credentials -c"COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
我假设存在一些内部psql命令,但是您也可以从utillinux ng包运行
DESCRIPTION
Script makes a typescript of everything printed on your terminal.