我正在制作一个有用的SQL脚本目录,以便在使用psql时能够使用它们。我希望能够不必进入该目录即可使用它们。
是否可以配置psql搜索特定路径以调用脚本?还是我必须使用完全限定名称来调用它们?
我正在制作一个有用的SQL脚本目录,以便在使用psql时能够使用它们。我希望能够不必进入该目录即可使用它们。
是否可以配置psql搜索特定路径以调用脚本?还是我必须使用完全限定名称来调用它们?
\set uptime 'select now() - backend_start as uptime from pg_stat_activity where pid = pg_backend_pid();'
然后在psql中运行查询时,需要在查询前加上冒号:uptime
或者
如果您的脚本很长,希望更好地组织它们,那么您可以创建脚本目录~/psqlrc.d
,然后(例如)(假设使用*nix操作系统):
echo "select now() - backend_start as uptime from pg_stat_activity where pid = pg_backend_pid();" > ~/psqlrc.d/uptime.sql
接下来需要编辑您的~/.psqlrc文件并添加以下内容:
\set uptime '\\i ~/psqlrc.d/uptime.sql'
然后在 psql 中输入 :uptime
来再次调用该脚本。
psqlrc
来实现。根据文档:
psqlrc
和~/.psqlrc
除非传递了
-X
或-c
选项,否则在连接到数据库之后但在接受常规命令之前,psql会尝试从系统范围内的启动文件(psqlrc
)中读取和执行命令,然后读取用户的个人启动文件(~/.psqlrc
)。
创建该文件(如果尚不存在),并将psql元命令\cd
放入其中。
根据文档:
例如,将以下内容放入您的用户的个人启动文件
\cd [ directory ]
将当前工作目录更改为
directory
。没有参数,则更改为当前用户的主目录。
~/.psqlrc
中:\set QUIET ON
\cd /var/lib/postgres/script/
\set QUIET OFF
\set QUIET ON
和\set QUIET OFF
可选择地抑制每次启动时\cd
的消息。
有两种解决方法。
使用psql \cd命令。进入$HOME文件夹。
sql>
\cd
\i git/my_project/src/abc.sql
使用操作系统软链接,
$> ln -s ~/git/my_project ~/work/project/my_project
psql
sql> \i ~/work/project/my_project/abc.sql