psql – 将命令结果保存到文件中
我使用psql的\dt
列出数据库中的所有表。 我需要将结果保存到一个文件。
我确信我以前做过,但不记得语法。
谢谢。
从psql的帮助( \?
):
\ o [文件]将所有查询结果发送到文件或pipe道
命令的顺序如下所示:
[wist@scifres ~]$ psql db Welcome to psql 8.3.6, the PostgreSQL interactive terminal db=>\o out.txt db=>\dt db=>\q [wist@scifres ~]$
psql \o
命令已经由jhwist描述过了。
另一种方法是使用COPY TO
命令直接写入服务器上的文件。 这有一个好处,它被倾倒在一个易于parsing的格式,而不是psql的表格格式。 使用COPY FROM
将其导入另一个表/数据库也很容易。
NB! 这需要超级用户权限并将写入服务器上的文件。
示例: COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
用';'创build一个CSV文件 作为字段分隔符。
一如既往, 请参阅文档以获取详细信息
\copy
这是一个postgres命令可以为任何用户工作。 不知道它是否适用于\ dt,但一般的语法是从下面的链接Postgres SQL复制语法转载
\copy (select * from tempTable limit 100) copy to 'filenameinquotes' with header delimiter as ','
上面的命令会将select查询的输出保存为作为csv文件提供的文件名
编辑:
对于我的psql服务器,下面的命令工作, 这是一个旧版本的V8.5
copy (select * from table1) to 'full_path_filename' csv header;
我假设这里有一些内部的psql命令,但是你也可以从util-linux-ng包运行script
命令:
描述脚本在terminal上打印所有内容。
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
该命令用于将整个表格存储为csv