对于家庭作业,每次我想连接到数据库时,我都要经历几个步骤,这已经变得非常烦人和浪费时间。
我已经将它的一部分自动化了。但是,我最近一次尝试自动化最后几个命令的尝试并未成功。
最初,我为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命令。
答案 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文件。