使用ssh在postgres中执行多行查询的便捷方法是什么?


9

假设我需要在控制台中手写一些查询,执行多行查询(如CREATE TABLE语句)的最有效方法是什么?

我曾经使用过Microsoft Management Studio,但是现在我发现自己不得不即时学习PostgreSQL。


输入?复制和粘贴?从文件重定向?
迈克尔·汉普顿

是的,我的意思是用手指输入:P。我要说的是,postgres #提示仅一次只输入一行,这对于诸如CREATE DATABASE或的功能非常有用ALTER USER。在执行之前,我如何能够很好地格式化我的文本?
乍得·哈里森

Answers:


4

实际上,根本没有“多行查询”之类的东西-就PostgreSQL而言,所有空格和那些换行符都是没有意义的(除非它们出现在字符串中,或​​者我们正在谈论制表符,例如COPY声明或其他一些特殊的地方)。

通常通过SSH psql工具在控制台上通过控制台编写查询,该工具是Postgres交互式终端(有关更多信息,请参阅文档)。

你可以通过包含查询文本文件psql使用的-f选项。

您还可以psql在命令行上将查询传递给(针对您的shell进行引用),或通过STDIN(标准输入流)将其传递给管道-请参见该-c选项。


管道,应该考虑过管道。我仍然学习。
乍得·哈里森

25

下面将带您到PostgreSQL的交互式终端:

$ psql <your database name>

然后输入\e(或\edit)以打开编辑器(vi默认):

# \e

编写一些查询:

select now();

最后,保存并退出您的编辑器(例如,:wq在中vi),然后psql运行您刚刚编写的查询。

要设置不同的编辑器,如vimnano,下面的环境变量的集合中的一个:PSQL_EDITOREDITORVISUAL

有关更多信息,请参见https://www.postgresql.org/docs/current/app-psql.html并搜索\e


2

您可以将查询写入临时文件并使用 psql -f /path/to/temp/file


0

显而易见,但是如果任何人都不知道,则可以直接在psql提示符下编写多行语句:

psql -h localhost -p 5432 -U postgres public
public=# SELECT
public=# *
public=# FROM
public=# mytable
public=# LIMIT 1;

请注意尾随;字符-只有发出此字符后,才会执行任何SQL命令。因此,最简单的方法是简单地复制并粘贴带有尾随的多行SQL命令;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.