如何将 psql 输出保存到文件?
我正在使用 psql 的 \dt
列出数据库中的所有表,我需要保存结果。
将 psql
命令的结果导出到文件的命令是什么?
I'm using psql's \dt
to list all tables in a database and I need to save the results.
What is the command to export the results of a psql
command to a file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
来自 psql 的帮助(
\?
):命令序列将如下所示:
然后任何 db 操作输出都将写入 out.txt。
输入“\o”将输出恢复到控制台。
From psql's help (
\?
):The sequence of commands will look like this:
Then any db operation output will be written to out.txt.
Enter '\o' to revert the output back to console.
jhwist 已经描述了 psql
\o
命令。另一种方法是使用 COPY TO 命令直接写入服务器上的文件。这样做的优点是它以您选择的易于解析的格式转储,而不是 psql 的表格格式。使用 COPY FROM 导入到另一个表/数据库也非常容易。
注意!这需要
超级用户
或pg_write_server_files
权限,并将写入服务器上的文件。示例:
COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
创建带有 ';' 的 CSV 文件作为字段分隔符。
与往常一样,有关详细信息,请参阅文档
The psql
\o
command was already described by jhwist.An alternative approach is using the
COPY TO
command to write directly to a file on the server. This has the advantage that it's dumped in an easy-to-parse format of your choice -- rather than psql's tabulated format. It's also very easy to import to another table/database usingCOPY FROM
.NB! This requires
superuser
orpg_write_server_files
privileges and will write to a file on the server.Example:
COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
Creates a CSV file with ';' as the field separator.
As always, see the documentation for details
使用pgsql命令的o参数。
Use o parameter of pgsql command.
\copy
这是一个 postgres 命令,适用于任何用户。不知道它是否适用于 \dt,但从以下链接复制了一般语法 Postgres SQL 复制语法上面会将选择查询的输出保存在作为 csv 文件提供的文件名中
编辑:
对于我的 psql 服务器,以下命令有效 这是旧版本 v8 .5
\copy
which is a postgres command can work for any user. Don't know if it works for \dt or not, but general syntax is reproduced from the following link Postgres SQL copy syntaxThe above will save the output of the select query in the filename provided as a csv file
EDIT:
For my psql server the following command works this is an older version v8.5
使用以下查询将结果存储在 CSV 文件中
示例
Use the below query to store the result in a CSV file
Example
如果出现以下错误,
可以按以下方式运行:
If you got the following error
you can run it in this way:
该命令用于将整个表存储为 csv
this command is used to store the entire table as csv
我假设存在一些内部 psql 命令,但您也可以从 util-linux-ng 包:
I assume that there exist some internal psql command for this, but you could also run the
script
command from util-linux-ng package:的 docker 方法
通过 psql 命令
或从 sql 文件查询
Approach for docker
via psql command
or query from sql file
这种方法适用于从最简单到最复杂的任何 psql 命令,无需对原始命令进行任何更改或调整。
注意:适用于 Linux 服务器。
模型
示例
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
示例
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
完成!谢谢! =D
This approach will work with any psql command from the simplest to the most complex without requiring any changes or adjustments to the original command.
NOTE: For Linux servers.
MODEL
EXAMPLE
MODEL
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
EXAMPLE
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
Done! Thanks! =D