如何正确地查看psql命令?

7

种子

我给我的数据库添加种子。

curl -s http://site/api/seed/user/1000

测试

我做了

psql --username=nm -d portal -h 192.168.1.27 -c "SELECT count(*) from users;"

我得到了

 count                                                                                                                                                                                 
-------                                                                                                                                                                                
  1000                                                                                                                                                                                 
(1 row)

观看

watch psql --username=nm -d portal -h 192.168.1.27 -c "SELECT count(*) from users;"

我得到了

Every 2.0s: psql --username=nm -d portal -h 192.168.1.27 -...  bh-macbook-pro-15-512gb.local: Tue Nov 21 15:19:08 2017

sh: -c: line 0: syntax error near unexpected token `('                                                                         
sh: -c: line 0: `psql --username=nm -d portal -h 192.168.1.27 -c SELECT count(*) from users;' 

我该如何修复这个错误?

我讨厌那些在不留言的情况下对他人的帖子进行负面评价,而没有给原作者提供改进的建议。 - code-8
什么是 watch - Barmar
watch 命令每1秒钟重新运行同一条命令。 - code-8
1
听起来像是watch中的一个错误,它没有重新引用参数。 - Barmar
在这种情况下,我想查看我的种子命令是否正常工作并且不会挂起。watch 命令将显示我数据库中表的增量计数。 - code-8
显示剩余4条评论
2个回答

9

将命令作为单个带引号的参数提供:

watch 'psql --username=nm -d portal -h 192.168.1.27 -c "SELECT count(*) from users;"'

0
使用\watch命令
在终端中一行命令
为了在终端中一次运行所有内容,可以在SQL命令之后添加\watch命令,并使用管道|来提供命令。 参数-c将不起作用(-c参数必须以分号;结尾,因此命令\watch;无法被识别)。
echo '[your_sql_cmd]; \watch' | psql [your_connection]

例子:

echo 'SELECT count(*) from users; \watch' | psql --username=nm -d portal -h 192.168.1.27

交互式终端

在连接到您的数据库后,可以直接在PostgreSQL交互式终端psql上执行命令,然后使用\watch命令。示例:

SELECT count(*) from users;
\watch

\watch命令的描述:

\watch [ i[nterval]=seconds ] [ c[ount]=times ] [ seconds ]

重复执行当前查询缓冲区(如同 \g 命令)直到被中断,或查询失败,或达到执行计数限制(如果有)。在执行之间等待指定的秒数(默认为2秒)。为了向后兼容,秒数可以带有或不带有 interval= 前缀。每个查询结果都显示一个包含 \pset title 字符串(如果有)的标题,以及查询开始时的时间和延迟间隔。
来源:https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-WATCH

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