自动化数据库连接

时间:2019-02-20 03:54:07

标签: postgresql shell ssh automation putty

对于家庭作业,每次我想连接到数据库时,我都要经历几个步骤,这已经变得非常烦人和浪费时间。

我已经将它的一部分自动化了。但是,我最近一次尝试自动化最后几个命令的尝试并未成功。

最初,我为PuTTy终端设置了一个快捷方式:

  1. 创建新的快捷方式
  2. 选择"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(实际上,甚至 都可以自动化以某种方式使用快捷方式?)。但是,实际上,我的shell脚本仅运行psql -h postgres命令,该命令成功启动了PostGreSQL

我的问题是:

如何获取另外两个命令(\c ift2935set search_path to inscriptions_devoir;)以在PostGreSQL内部自动运行?


编辑:

忘记提及:在执行脚本的第一个命令后,我可以键入\q离开PostGreSQL,然后终端输出以下内容:

-bash: c: command not found

我认为这表明终端中断其当前进程以实际运行PostGreSQL,并在退出时恢复该脚本,移至第二个命令,该命令失败,因为\c毫无意义作为shell命令。

2 个答案:

答案 0 :(得分:2)

连接到数据库后,运行:

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,这样就不那么麻烦了。

主题外:勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰与好奇心相结合。如果您打算从事计算机工程业务,我向您保证光明的未来。

答案 1 :(得分:-1)

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

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