我正在创建一个有用的sql脚本目录来使用psql。我希望能够使用它们而无需cd到目录。
是否可以配置psql来搜索特定路径以获取调用的脚本?或者我是否必须使用完全限定的名称来调用它们?
答案 0 :(得分:2)
是的,您可以使用启动文件psqlrc
。 Per documentation:
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 ON
可选择在每次启动时停用\cd
的消息。
答案 1 :(得分:0)
您可以简单地将脚本放在.psqlrc文件中:
\set uptime 'select now() - backend_start as uptime from pg_stat_activity where pid = pg_backend_pid();'
然后在psql中运行查询,方法是在其前面添加冒号:uptime
或
如果您的脚本很长并且您希望更好地组织它们,那么您可以创建脚本目录~/psqlrc.d
或其他任何内容(例如)(假设* nix OS):
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
来调用脚本。
答案 2 :(得分:0)
有两种解决方法。
psql \cd 命令。 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