PostgreSQL psql 终端命令

49

我正试图让psql的格式更加清晰易读,遵循这里的文档。现在,无论我将屏幕调到多大,每行都会溢出到下一行,并产生一屏难以阅读的垃圾。

文档(链接在上面)说有一种方法可以使列对齐,获得更易读的输出。

通常我只需输入以下命令来启动psql:

psql

然而现在我正在尝试:

psql \pset format aligned

并且收到了错误信息:

could not change directory to "/root"
psql: warning: extra command-line argument "aligned" ingored
psql: FATAL: Indent authentication failed for user "format"

有什么想法可以让这些命令行参数对我起作用吗?


2
在Ubuntu 13/10上:sudo -u postgres psql。然后在交互式shell中键入\c会显示“您现在以用户postgres连接到数据库postgres”。 - Timo
3个回答

91

这些不是命令行参数。运行psql,成功登录到数据库(如果需要,请提供主机名、端口、用户名和数据库),然后在psql程序中编写它。

示例(以下是两个命令,写下第一个,按Enter键,等待psql登录,再写下第二个):

psql -h host -p 5900 -U username database
\pset format aligned

注意关键词的排列顺序,尽量按照原文的顺序书写 :) - 谢谢亲爱的 - Mani
对于我安装的PostgreSQL 9.6.10,我必须使用psql -h host -p port -d database -U user -W命令,设置是区分大小写的。 - Evan

6

使用 \x

例子来自Postgres手册:
    postgres=# \x
    postgres=# SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
    -[ RECORD 1 ]------------------------------------------------------------
    userid     | 10
    dbid       | 63781
    query      | UPDATE branches SET bbalance = bbalance + $1 WHERE bid = $2;
    calls      | 3000
    total_time | 20.716706
    rows       | 3000
    -[ RECORD 2 ]------------------------------------------------------------
    userid     | 10
    dbid       | 63781
    query      | UPDATE tellers SET tbalance = tbalance + $1 WHERE tid = $2;
    calls      | 3000
    total_time | 17.1107649999999
    rows       | 3000
    -[ RECORD 3 ]------------------------------------------------------------
    userid     | 10
    dbid       | 63781
    query      | UPDATE accounts SET abalance = abalance + $1 WHERE aid = $2;
    calls      | 3000
    total_time | 0.645601
    rows       | 3000

4
psql --pset=format=FORMAT

很适合从命令行执行查询,例如:

psql --pset=format=unaligned -c "select bandanavalue from bandana where bandanakey = 'atlassian.confluence.settings';"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接