自动化数据库连接

Automating Database Connection

作为家庭作业,每次我想连接到数据库时都必须完成几个步骤,这变得非常烦人且浪费时间。

我已经自动化了一部分。但是,我最近尝试自动执行最后几个命令并没有成功。

最初,我设置了 PuTTy 终端的快捷方式:

  1. 创建新快捷方式
  2. Select "C:\Program Files\PuTTY" 作为入口点 (Start in)
  3. 输入 "C:\Program Files\PuTTY\putty.exe" <MY_USERNAME>@arcade.iro.umontreal.ca -pw <MY_PASSWORD> 作为 Target

然后双击这个快捷方式后,我输入了这两行(创建然后执行一个bash脚本):

echo "psql -h postgres && \c ift2935 && set search_path to inscriptions_devoir;" > sql.sh
. sql.sh

最终,我的目标是在打开我的快捷方式后能够简单地编写 . sql.sh 以完成所有设置并准备就绪(实际上,甚至可能 that 可以通过快捷方式以某种方式自动化?)。但是,实际上,我的 shell 脚本仅 运行 是 psql -h postgres 命令,它成功启动 PostGreSQL

我的问题是:

如何让其他两个命令(\c ift2935set search_path to inscriptions_devoir;)在 PostGreSQL 中自动 运行?


编辑:

忘了说:在我的脚本的第一个命令执行后,我可以输入 \q 离开 PostGreSQL 然后终端输出这个:

-bash: c: command not found

我认为,这表明终端实际上​​中断了它的当前进程 运行 PostGreSQL,并且在退出时,它恢复脚本,移动到第二个命令,该命令失败,因为 \c 作为 shell 命令没有任何意义。

我认为您应该尝试使用 pgpass 文件。

https://www.postgresql.org/docs/current/libpq-pgpass.html

连接到数据库时,运行:

ift2935=> ALTER ROLE <MY_USERNAME> SET search_path TO inscriptions_devoir;

这是您的数据库用户。除非设置 PGUSER,否则这应该与您的操作系统用户相同,但您始终可以通过 SELECT current_user;.

找到它

然后设置将在您下次连接时自动激活。

在您的 shell 脚本中,将调用更改为

psql -h postgres -d ift2935

或者,在我看来稍微好一点的是以下更复杂的程序:

  • 编辑主目录中的文件.bash_profile并添加

    export PGHOST=postgres
    export PGDATABASE=ift2935
    

    然后断开重连(开始登录时执行此文件shell)。

  • 而不是运行宁. sql.sh,只需键入psql,这样就不那么麻烦了。

题外话:人们普遍认为,勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰加上好奇心。如果你打算从事计算机工程行业,我保证你前途光明。