对于一个家庭作业,我有几个步骤,我必须经历每一次我想连接到数据库,它正在成为一个非常烦人和浪费时间的行为。
我已经自动部分了。但是,我最近尝试自动执行最后几个命令并没有成功。
最初,我已经建立了一个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
即可进行全部设置并准备就绪(实际上,甚至可以通过快捷方式以某种方式自动化?)。但是,实际上,我的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
,这不那么麻烦。关闭主题:人们普遍认为,勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明的母亲,特别是懒惰与好奇心相结合。如果您计划进入计算机工程领域,我向您保证一个光明的未来。
我想你应该尝试使用pgpass文件。