通过 shell 连接时,如何在 PostgreSQL 中自动执行查询?
How do I execute a query automatically in PostgreSQL when connecting via shell?
我希望能够在使用 psql
连接到 Postgres 时自动执行一条语句,然后保持连接状态以便我可以输入更多命令。
目前,每次连接时,我做的第一件事就是输入:
SET search_path = 'something';
或者我可能想做其他事情,例如:
SELECT COUNT(*) FROM sometable;
我知道 psql 有一个 -c
参数,它会执行一个命令然后退出。我正在寻找一种可以在连接时执行命令然后 保留在客户端中的方法 .
(注意:我不想更改数据库、架构或角色以使 search_path
永久化,因为我发现的所有解决方案似乎都是强制性的。我想在每次连接时都进行设置. 但是同样,这个问题可以应用任何 SQL 语句。)
我试过这个:
echo "SET search_path TO 'mything'" | psql
但这与以下行为相同:
psql -c "SET search_path TO 'mything'"
我要求的是可行的吗?
psql 每次启动时都会在几个地方查找并执行在其中找到的任何命令。一个是系统范围的 psqlrc 文件,一个是 运行ning psql, ~/.psqlrc.
登录的主目录。
因此,您可以将您一直希望成为 运行 的 SET 命令添加到您的 .psqlrc 文件中,它会在您每次启动时执行。请参阅下面的示例:
~ $ cat ~/.psqlrc
SET search_path='mything';
~ $ psql
SET search_path='mything';
SET
psql (8.4.20, server 9.2.10)
WARNING: psql version 8.4, server version 9.2.
Some psql features might not work.
Type "help" for help.
rhnschema=# show search_path;
search_path
-------------
mything
(1 row)
rhnschema=#
我希望能够在使用 psql
连接到 Postgres 时自动执行一条语句,然后保持连接状态以便我可以输入更多命令。
目前,每次连接时,我做的第一件事就是输入:
SET search_path = 'something';
或者我可能想做其他事情,例如:
SELECT COUNT(*) FROM sometable;
我知道 psql 有一个 -c
参数,它会执行一个命令然后退出。我正在寻找一种可以在连接时执行命令然后 保留在客户端中的方法 .
(注意:我不想更改数据库、架构或角色以使 search_path
永久化,因为我发现的所有解决方案似乎都是强制性的。我想在每次连接时都进行设置. 但是同样,这个问题可以应用任何 SQL 语句。)
我试过这个:
echo "SET search_path TO 'mything'" | psql
但这与以下行为相同:
psql -c "SET search_path TO 'mything'"
我要求的是可行的吗?
psql 每次启动时都会在几个地方查找并执行在其中找到的任何命令。一个是系统范围的 psqlrc 文件,一个是 运行ning psql, ~/.psqlrc.
登录的主目录。因此,您可以将您一直希望成为 运行 的 SET 命令添加到您的 .psqlrc 文件中,它会在您每次启动时执行。请参阅下面的示例:
~ $ cat ~/.psqlrc
SET search_path='mything';
~ $ psql
SET search_path='mything';
SET
psql (8.4.20, server 9.2.10)
WARNING: psql version 8.4, server version 9.2.
Some psql features might not work.
Type "help" for help.
rhnschema=# show search_path;
search_path
-------------
mything
(1 row)
rhnschema=#