Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过shell连接时,如何在PostgreSQL中自动执行查询?_Postgresql_Shell_Psql - Fatal编程技术网

通过shell连接时,如何在PostgreSQL中自动执行查询?

通过shell连接时,如何在PostgreSQL中自动执行查询?,postgresql,shell,psql,Postgresql,Shell,Psql,我希望在使用psql连接到Postgres时能够自动执行一条语句,然后保持连接状态,以便输入更多命令 目前,每次连接时,我要做的第一件事就是键入: SET search_path='something'; 或者我想做些别的事情,比如: 从sometable中选择COUNT(*); 我知道psql有一个-c参数,它将执行一个命令,然后退出。我正在寻找一种方法,可以在连接时执行命令,然后留在客户机中 (注意:我不希望改变数据库、模式或角色,使搜索路径永久化,因为我找到的所有解决方案似乎都要求这样

我希望在使用
psql
连接到Postgres时能够自动执行一条语句,然后保持连接状态,以便输入更多命令

目前,每次连接时,我要做的第一件事就是键入:

SET search_path='something';
或者我想做些别的事情,比如:

从sometable中选择COUNT(*);
我知道psql有一个
-c
参数,它将执行一个命令,然后退出。我正在寻找一种方法,可以在连接时执行命令,然后留在客户机中

(注意:我不希望改变数据库、模式或角色,使
搜索路径永久化,因为我找到的所有解决方案似乎都要求这样做。我希望每次连接时都设置它。但是,这个问题可以应用任何SQL语句。)

我试过这个:

echo“将搜索路径设置为‘虚构’”| psql
但其行为方式与:

psql-c“将搜索路径设置为‘虚构’”

我所要求的是可行的吗?

psql将在每次启动时查找并执行在几个地方找到的任何命令。一个是系统范围的psqlrc文件,另一个在运行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=# 

欢迎来到stackoveflow。考虑给你的答案加上解释。