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

时间:2019-03-09 21:49:54

标签: postgresql psql postgresql-10

我在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;

通过终端保存查询的突击队是什么?

2 个答案:

答案 0 :(得分:1)

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

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元命令来清除它,并继续进行正常活动,而无需编写其他任何内容到指定的文件。

答案 1 :(得分:0)

也可以从psql在外部编辑器中打开最后执行的命令。该命令为\e,在大多数系统上,它将在vi中打开命令缓冲区。这将创建一个临时文件,但是没有任何阻止您将其他副本保存在/tmp目录之外的情况。另外,您可以使用环境变量EDITOR控制选择的编辑器,可以使用psql命令关闭环境变量\setenv来设置。

如果要查找更多有用的命令,请参见docs for psql。它读起来非常好,实际上很有帮助。