如何将PostgreSQL数据库中的所有表导出为csv文件?

如何将PostgreSQL数据库中的所有表导出为csv文件?,postgresql,export-to-csv,Postgresql,Export To Csv,我进入了psql命令行模式并输入了正确的数据库,我可以列出所有的表 现在,我尝试了以下命令: copy some_table_name1 to '/var/lib/pgsql/csv_exports/some_table_name1.csv' csv header copy some_table_name2 to '/var/lib/pgsql/csv_exports/some_table_name2.csv' csv header 等等 命令之后没有错误消息或任何东西,我使用tab按钮确保始

我进入了psql命令行模式并输入了正确的数据库,我可以列出所有的表

现在,我尝试了以下命令:

copy some_table_name1 to '/var/lib/pgsql/csv_exports/some_table_name1.csv' csv header
copy some_table_name2 to '/var/lib/pgsql/csv_exports/some_table_name2.csv' csv header
等等

命令之后没有错误消息或任何东西,我使用tab按钮确保始终引用正确的表名

对所有表执行此操作后,我转到目录,但根本没有任何文件

我做错什么了吗


编辑:我应该澄清一下,我在服务器上使用putty和WINSCP查找该目录。与我在中运行psql命令的位置相同。

文件将写入服务器机器上的该目录,而不是客户端

使用
复制。。。到STDOUT
将数据发送到客户端。

在控制台中使用,您可以使用以下命令在客户端计算机中获取数据:

$psql yourdb-c“将您的表复制到标准输出分隔符”,“CSV头”>output.CSV


如果您想知道如何以另一种方式(导入),请看一看。

假设您真正想做的是将文件输出到本地计算机(即开发人员工作站)上的某个位置,我建议您使用“\copy”命令,而不是“copy”命令


否则,除非按照@LaurenzAlbe的建议将命令显式重定向到stdout,“COPY”命令将检查并查看您是否有权将文件写入实际的数据库服务器。通常,这不是您和的行为,它需要比大多数开发人员更大的访问权限。

没有错误消息吗?通常此命令应执行以下操作:
将表复制到“/tmp/table.csv”分隔符、“csv头”
此外,请确保您没有查看客户端计算机中的
/var/lib/
;-)为了使用
COPY
将文件保存在客户机中,您必须使用标准输出。让我知道这是否是你想要的。使用这种方法你能得到什么
$psql yourdb-c“将您的表复制到标准输出分隔符”,“CSV头”>output.CSV
我更新了问题。我在连接到的同一台机器上创建了该文件夹,并在其中运行了psql命令。然后我的答案没有命中它,我将删除它。您所描述的不会发生(除非发生某些事情并删除文件)。这是一个吞食文件的奇怪文件系统吗?
psql -c "\copy (SELECT * FROM account) to '/tmp/account.csv' with csv;"
psql -c "\copy account TO '/tmp/account.csv' DELIMITER ',' CSV HEADER;