将 Postgres 表导出到 csv

Posted

技术标签:

【中文标题】将 Postgres 表导出到 csv【英文标题】:Export Postgres table to csv 【发布时间】:2016-09-06 16:10:39 【问题描述】:

我正在尝试将我的 Postgres 表导出到我桌面上的 csv 中,但我收到了以下错误:

错误:无法打开文件“C:\Users\blah\Desktop\countyreport.csv”进行写入:权限被拒绝 SQL 状态:42501

这是我的查询,我认为它是正确的语法

COPY countyreport TO 'C:\\Users\\blah\\Desktop\\countyreport.csv' DELIMITER ',' CSV HEADER;

【问题讨论】:

Save PL/pgSQL output from PostgreSQL to a CSV file的可能重复 如果你在 psql 中运行它,你需要 \copy 而不是 copy 【参考方案1】:

根据用户手册:

在 COPY 命令中命名的文件由 服务器,而不是客户端应用程序。

https://www.postgresql.org/docs/current/static/sql-copy.html

常见的错误是认为文件系统访问权限是(客户端)用户的,但事实并非如此。以自己的用户身份运行 postgresql 服务器是正常的。因此,服务器执行的操作将作为与客户端不同的操作系统用户来完成。服务器通常以操作系统用户postgres 运行。

假设您在本地计算机上运行服务器,那么修复它的最简单方法是让 postgres 访问您的主目录或桌面。这可以通过更改主目录上的 Windows 安全设置来完成。

在你这样做之前....停下来想一想。这是你想要的?如果服务器正在开发中,那么它将始终在用户的机器上运行。如果没有,那么您可能需要使用COPY 写信给stdout。 See the manual for information on this.

【讨论】:

以上是关于将 Postgres 表导出到 csv的主要内容,如果未能解决你的问题,请参考以下文章

在 postgres 上将表导出为 CSV,而无需使用“文本到列”

DBeaver,从数据库 Postgres,表结构(属性)导出到文件 .txt

Postgres copy命令导入导出数据

将 HBase 数据导出到 RDBMS

使用 UNLOAD 命令将 AWS Redshift 数据导出到 S3 时输出不正确

markdown Postgres - 将表导出为SQL