如何隐藏psql输出中的列名和行数?

我正在通过psql运行一个SQL查询:

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;"

我期望的结果是:

1,abc
2,def
3,xyz

但我得到的却是:

id,text
-------
1,abc
2,def
3,xyz
(3 rows)

当然,在事实发生后过滤掉最上面的两行和最下面的一行并不是不可能的,但是有没有一种方法可以只用psql来实现呢?翻阅它的主页,我看到了控制字段分隔符的选项,但没有看到隐藏无关输出的选项.

推荐答案

您可以使用-t--tuples-only选项:

psql --user=myuser -d mydb --output=result.txt -t -c "SELECT * FROM mytable;"

Edited(一年多后)to add:

你可能还想查看the COPY command个.我不再有任何PostgreSQL实例可供测试,但我认为您可以编写以下内容:

psql --user=myuser -d mydb -c "COPY mytable TO 'result.txt' DELIMITER ','"

(除了result.txt需要是一条绝对路径).COPY命令还支持更智能的CSV格式;见its documentation.

Sql相关问答推荐

SQL查询以创建手头的流动余额?

PG SQL中按条件聚合值

SQL Google Sheets:UNIQUE/DISTINCT和编码查询函数

基于列对多行求和的查询

通过 Select 值的顺序进行排序ClickHouse

在Golang中管理数据库事务的简洁方法

替换条件中的单元格值

MariaDB查询在逗号分隔的字符串中查找多个值

如何设计一个调用嵌套函数并仅在所有被调用的嵌套函数都提交时才提交的事务,例如,如果一个子函数失败则中止?

IF NOT EXISTS子查询的性能瓶颈

明细表中没有记录如何更新主表的值为0

SQL仅返回第一个字母在A-Z之间的值

显示十进制列,但尽可能显示为整数

VS代码无法识别SQL代码中带括号的字符串

输出连续出现两次以上的行

使用 Oracle SQL Developer 将不同的列值转换为列会导致错误 ORA-01489

从输出中删除 jsonb_build_object

对现有记录进行分组

比使用NOT EXISTS更高效的SQL删除方法是什么?

正则表达式忽略特定数据部分的分隔符