在我的shell上使用 psql ,我试图以特定方式显示 SELECT CLAUSE 的输出。 我希望我的行的每个列值都显示在它自己的行上。
现在,我的输出看起来像这样(我不想要的显示):
Expanded display is on.
idOne nameOne createdAtOne
idTwo nameTwo createdAtTwo
但我希望它看起来像这样
Expanded display is on.
idOne
nameOne
createdAtOne
idTwo
nameTwo
createdAtTwo
我的命令行如下
psql -h hostName -d databaseName -U userName -p 5432 -c '\x on' -c "
COPY (
SELECT
e.id,
e.name,
e.created_at
FROM entity_name e
) TO STDOUT
;
"
我希望我的表格中某一列的每个值都显示在各自独立的行上。
但是虽然我在命令行中使用了-c ‘\x on’
,但即使显示扩展显示在的句子,我的输出仍然是第一种方式而不是扩大的方式。
我该怎么做?我错过了什么?
我的远程服务器上的psql版本是 psql(PostgreSQL)9.6.6 ,我正在使用MAC。
(ps:如果有可能,我甚至希望我的输出看起来像这样
id idOne
name nameOne
created_at createdAtOne
id idTwo
name nameTwo
created_at createdAtTwo
答案 0 :(得分:2)
https://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-META-COMMANDS
此命令设置影响查询结果表输出的选项
换句话说,它仅影响显示的表,而COPY to STDOUT
显示生成的生成的tsc或csv的输出。因此\x
不会影响它。
同样来自您的查询 - 我认为COPY
中没有必要 - 您只需从查询复制到标准输出 - 从而省略copy
而只是运行
SELECT
e.id,
e.name,
e.created_at
FROM entity_name e
扩展显示中的将给出预期结果。您必须grep -v 'RECORD'
但