![使用 ssh 在 postgres 中执行多行查询的便捷方法是什么?](https://linux22.com/image/592238/%E4%BD%BF%E7%94%A8%20ssh%20%E5%9C%A8%20postgres%20%E4%B8%AD%E6%89%A7%E8%A1%8C%E5%A4%9A%E8%A1%8C%E6%9F%A5%E8%AF%A2%E7%9A%84%E4%BE%BF%E6%8D%B7%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
假设我需要在控制台中手写一些查询,执行CREATE TABLE
语句等多行查询的最有效方法是什么?
我习惯使用 Microsoft Management Studio,但现在发现自己必须即时学习 PostgreSQL。
答案1
下面将带您进入 PostgreSQL 的交互式终端:
$ psql <your database name>
然后输入\e
(或\edit
)打开编辑器(vi
默认):
# \e
写一些查询:
select now();
最后,保存并退出您的编辑器(例如:wq
在vi
),然后psql
将运行您刚刚编写的查询。
要设置不同的编辑器,例如vim
或nano
,请设置以下环境变量之一:PSQL_EDITOR
,EDITOR
,VISUAL
。
有关详细信息,请参阅For more information, seehttps://www.postgresql.org/docs/current/app-psql.html并搜索\e
。
答案2
您可以在 bash(.sh 文件)中使用此语法:
psql postgres://postgres:postgres@localhost:5432/postgres << SQL
CREATE TABLE "public"."links" (
id bigint PRIMARY KEY,
from_id bigint DEFAULT 0,
to_id bigint DEFAULT 0,
type_id bigint NOT NULL
);
SQL
答案3
实际上没有“多行查询”这样的东西 - 就 PostgreSQL 而言,所有空格和换行符都是没有意义的(除非它们出现在字符串中,或者我们谈论语句COPY
或其他一些特殊位置中的制表符等)。
通过 SSH 在“控制台”上编写查询通常使用psql
Postgres 交互式终端工具(请参阅文档了解更多信息)。
你可以通过包含查询的文本文件使用psql
该-f
选项。
您还可以psql
在命令行上传递查询(根据您的 shell 适当引用),或者通过 STDIN(标准输入流)将它们传入 - 请参阅选项-c
。
答案4
您可以将查询写入临时文件并使用以下方式执行psql -f /path/to/temp/file