自动化数据库连接
Automating Database Connection
作为家庭作业,每次我想连接到数据库时都必须完成几个步骤,这变得非常烦人且浪费时间。
我已经自动化了一部分。但是,我最近尝试自动执行最后几个命令并没有成功。
最初,我设置了 PuTTy
终端的快捷方式:
- 创建新快捷方式
- Select
"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 命令没有任何意义。
我认为您应该尝试使用 pgpass 文件。
连接到数据库时,运行:
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
,这样就不那么麻烦了。
题外话:人们普遍认为,勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰加上好奇心。如果你打算从事计算机工程行业,我保证你前途光明。
作为家庭作业,每次我想连接到数据库时都必须完成几个步骤,这变得非常烦人且浪费时间。
我已经自动化了一部分。但是,我最近尝试自动执行最后几个命令并没有成功。
最初,我设置了 PuTTy
终端的快捷方式:
- 创建新快捷方式
- Select
"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 命令没有任何意义。
我认为您应该尝试使用 pgpass 文件。
连接到数据库时,运行:
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
,这样就不那么麻烦了。
题外话:人们普遍认为,勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰加上好奇心。如果你打算从事计算机工程行业,我保证你前途光明。