我无法将PostgreSQL输出从shell导出到csv文件

我在shell中键入了以下命令:

psql congress -af script.sql &> filename.csv

但当我打开filename.csv文件时,所有列的值都被压缩在Excel csv中的一列中(见附件屏幕截图).

然后我try 了另一种方法.我把我的script.sql名编辑成:

Copy (Select * From ...) To '/tmp/filename.csv' With CSV;

然后,我在数据库dbname中的shell中键入以下命令.

\i script.sql

输出为:

COPY 162

我的输出查询有162行.

因此,我的输出表中的162行已被复制到shell中.如何将它们粘贴或移动到csv文件中?

或者,如果我要使用文件名.csv(附屏幕截图),如何修复该csv/Excel文件的格式?

文件名的屏幕截图.csv

推荐答案

现代语法:

COPY (SELECT * FROM ...) TO '/tmp/filename.csv' (FORMAT csv);

因此,我的输出表中的162行已被复制到shell中.怎样

结果将显示CSV文件.使用任何使用匹配分隔符的Electron 表格程序打开它.The manual:

默认为文本格式的制表符,CSV格式的逗号

psql元命令\copy是围绕SQL COPY函数的包装器.它写入和读取客户端本地的文件(而COPY使用服务器本地的文件),不需要超级用户权限.

见:

Postgresql相关问答推荐

优化PostgreSQL查询以将用户插入数据库

分区可以用于postgres中的同类查询吗?

当条件的计算结果为假(或真)时停止执行查询

在PostGreSQL中获取最近日期的项目

select语句的Jooq代码生成

PostgreSQL 连接字符串的正则表达式

合并两个字典并创建一个包含更新凭据的字典列表

如何获取在 Go 中完成的 SQL 插入的错误详细信息?

Power BI + Postgres:只读用户

使用 JDBC 连接到 PostgreSql 的本地实例

PostgreSQL比较两个jsonb对象

使用 RPostgreSQL 进行 UTF-8 / Unicode 文本编码

如何在 Postgres 中的列上删除唯一约束?

Nodejs应用程序的node-postgres vs pg-promise

如何将 postgres 数据库转换为 sqlite

如果 PostgreSQL 数据库中存在,则删除表

docker postgres 无法从指定端口启动

在 postgresql 中获取上个月的数据

学习 PL/pgSQL 的好资源?

Postgresql滚动删除旧行?