在不离开命令行的情况下结束Postgres查询 - 自动返回命令行

时间:2016-07-28 16:58:12

标签: postgresql command-line psql

每当我运行Postgres查询时,您似乎必须完全退出命令行。

我已经看到它已完成,您可以按CTRL-C,然后您将被带回PSQL命令行,即databasename=>。另外,如果我正在查看结果并按CTRL-C,我如何让Postgres将我发回databasename=>

加分:

有没有一种方法来编写脚本是这样的,如果我用psql输入usedb databasename,Postgres会知道我指的是哪个数据库并自动将我连接到它所以我不必输入\ connect databasename?

2 个答案:

答案 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,例如irbrails consolepythonRbash等。

Ctrl-C未退出的原因是您可以使用它来中止单个命令,例如一个长期运行的查询。

编辑:此外,如果您正在查看结果并将其分页(它们显示在新屏幕上,您可以向上和向下滚动),则可以返回psql键入q即可提示。那是因为默认情况下,使用的寻呼机只是less。您可以说man less阅读更多相关信息。或者在任何文本文件上进行试验:less /etc/services

我个人觉得psql中的分页很烦人,所以我通过用这行创建一个名为~/.psqlrc的文件来关闭它:

\pset pager

(另外,如果您已经知道这一点,很抱歉:~只是“我的主目录”的缩写。因此~/.psqlrc/home/whatever/.psqlrc相同。)

奖励:如果您想要连接到特定数据库,可以说psql -d foo甚至psql foo