如何通过终端在 psql 中保存查询

How to save query in psql by terminal

我在 PSQL 和 运行 中创建了一个查询并想保存它。 查询示例:

CREATE VIEW total_revenue_per_customer AS SELECT
customers.id, customers.first_name, customers.last_name,
SUM(items.price) FROM customers                                                          
INNER JOIN purchases ON customers.id = purchases.customer_id
INNER JOIN items ON purchases.item_id = items.id
GROUP BY customers.id;

通过终端保存我的查询的命令是什么?

首先,我在我的工作目录中创建一个空文本文件:

filename.txt     ("remember to give permission to edit and modify")

现在,使用 psql 元命令,\o 我们可以安排将以后的查询结果写入提供的文件名。

\o filename.txt

如上所示,我们可以看到简单语法结构的一种变体是:

\o filename.txt

创建我的查询并 运行

CREATE VIEW total_revenue_per_customer AS SELECT
customers.id, customers.first_name, customers.last_name,
SUM(items.price) FROM customers                                                          
INNER JOIN purchases ON customers.id = purchases.customer_id
INNER JOIN items ON purchases.item_id = items.id
GROUP BY customers.id;

保存于out.txt

由于 \o 元命令在查询缓冲区中仍然处于活动状态,您可以通过发出另一个 \o 元命令将其清除,然后继续正常 activity, 不向指定文件写入任何其他内容。

上次执行的命令也可以在 psql 的外部编辑器中打开。该命令是 \e,在大多数系统上,它会在 vi 中打开命令缓冲区。这将创建一个临时文件,但不会阻止您在 /tmp 目录之外保存另一个副本。此外,您可以使用环境变量 EDITOR 控制您选择的编辑器,无需使用 \setenv 命令关闭当前 psql 会话即可进行设置。

如果您想找到更多有用的命令,请参阅 docs for psql。它读起来非常好,实际上非常有帮助。