作为家庭作业,每次我想连接到数据库时我都必须完成几个步骤,这变得非常烦人且浪费时间。
我已经自动化了其中的一部分。但是,我最近尝试自动执行最后几个命令并没有成功。
最初,我设置了一个指向 PuTTy
的快捷方式终端:
- 创建新的快捷方式
- 选择
"C:\Program Files\PuTTY"
作为入口点 (Start in
) - 输入
"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 ift2935
和 set search_path to inscriptions_devoir;
)在 PostGreSQL 中自动运行?
编辑:
忘了说:在我的脚本的第一条命令执行后,我可以输入 \q
离开PostGreSQL
然后终端输出这个:
-bash: c: command not found
我认为,这表明终端中断了其当前进程以实际运行 PostGreSQL
并且,在退出时,它恢复脚本,移动到第二个命令,该命令失败,因为 \c
作为 shell 命令没有任何意义。
最佳答案
连接到数据库后,运行:
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
,不那么繁琐。
题外话:人们普遍认为,勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰加上好奇心。如果你打算从事计算机工程行业,我向你保证前途光明。
关于postgresql - 自动化数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54778578/