每当我运行Postgres查询时,您似乎必须完全退出命令行。
我已经看到它已完成,您可以按CTRL-C
,然后您将被带回PSQL
命令行,即databasename=>
。另外,如果我正在查看结果并按CTRL-C
,我如何让Postgres将我发回databasename=>
?
加分:
有没有一种方法来编写脚本是这样的,如果我用psql输入usedb databasename,Postgres会知道我指的是哪个数据库并自动将我连接到它所以我不必输入\ connect databasename?
答案 0 :(得分:0)
一旦postgres查询运行并在'psql'命令行环境中返回其结果表,它应该让你回到你运行上一个命令的同一个数据库。
如果要从终端直接连接到数据库:
psql -d nameofdatabase
如果您想使用脚本进行连接,可以通过url访问postgres:
postgres://username:password@localhost/nameofdatabase
如果'localhost'不在同一台机器上,那么'localhost'可以被您尝试连接的数据库的ip替换。
答案 1 :(得分:0)
按Ctrl-C
,而不是按Ctrl-D
。在Unix中,Ctrl-D
是文件结束(EOF)字符。这就是让psql
退出的原因---就像你在stdin上输入一个脚本一样,它就到了最后。它也适用于许多其他REPL,例如irb
,rails console
,python
,R
,bash
等。
Ctrl-C
未退出的原因是您可以使用它来中止单个命令,例如一个长期运行的查询。
编辑:此外,如果您正在查看结果并将其分页(它们显示在新屏幕上,您可以向上和向下滚动),则可以返回psql
键入q
即可提示。那是因为默认情况下,使用的寻呼机只是less
。您可以说man less
阅读更多相关信息。或者在任何文本文件上进行试验:less /etc/services
。
我个人觉得psql中的分页很烦人,所以我通过用这行创建一个名为~/.psqlrc
的文件来关闭它:
\pset pager
(另外,如果您已经知道这一点,很抱歉:~
只是“我的主目录”的缩写。因此~/.psqlrc
与/home/whatever/.psqlrc
相同。)
奖励:如果您想要连接到特定数据库,可以说psql -d foo
甚至psql foo
。