自动化数据库连接

问题描述 投票:1回答:2

对于一个家庭作业,我有几个步骤,我必须经历每一次我想连接到数据库,它正在成为一个非常烦人和浪费时间的行为。

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

最初,我已经建立了一个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命令。

postgresql shell ssh automation putty
2个回答
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
投票

我想你应该尝试使用pgpass文件。

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

© www.soinside.com 2019 - 2024. All rights reserved.