我使用psql的\dt列出数据库中的所有表,我需要保存结果。

将psql命令的结果导出到文件的语法是什么?


当前回答

COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;

该命令用于将整个表存储为CSV格式

其他回答

我假设存在一些内部的psql命令,但你也可以从util-linux-ng包中运行脚本命令:

描述 脚本使打印在终端上的所有内容的typescript。

使用pgsql命令的o参数。

-o,——output=FILENAME将查询结果发送到文件(或|管道)

psql -d DatabaseName -U UserName -c "SELECT * FROM TABLE" -o /root/Desktop/file.txt

从psql的帮助(\?):

\o [FILE]将所有查询结果发送到文件或|管道

命令序列如下所示:

[wist@scifres ~]$ psql db
Welcome to psql 8.3.6, the PostgreSQL interactive terminal

db=>\o out.txt
db=>\dt

然后任何db操作输出都将被写入out.txt。 输入'\o'将输出恢复到控制台。

db=>\o

psql \o命令已经由jhwist描述。

另一种方法是使用COPY TO命令直接写入服务器上的文件。这样做的好处是,它被转储为您选择的易于解析的格式——而不是psql的表格格式。使用COPY FROM导入到另一个表/数据库也很容易。

NB !这需要超级用户或pg_write_server_files权限,并将写入服务器上的文件。

示例:COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')

创建一个以';'作为字段分隔符的CSV文件。

与往常一样,详细信息请参阅文档

COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;

该命令用于将整个表存储为CSV格式