在PSQL

时间:2018-03-14 10:44:22

标签: postgresql psql

在我的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

1 个答案:

答案 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'