【问题标题】:Automating Database Connection自动化数据库连接
【发布时间】:2023-03-09 12:00:02
【问题描述】:

对于家庭作业,每次我想连接到数据库时都必须执行几个步骤,这变得非常烦人且浪费时间。

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

最初,我设置了一个到 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 没有任何外壳命令.

【问题讨论】:

    标签: postgresql shell ssh automation putty


    【解决方案1】:

    连接到数据库时,运行:

    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,这样不那么麻烦。

    题外话:人们普遍认为勤奋是进步的动力。没有什么比真相更遥远。懒惰是发明之母,特别是懒惰与好奇心相结合。如果您打算进入计算机工程行业,我向您保证前途一片光明。

    【讨论】:

    • psql -h postgres -d ift2935 确实让我离目标更近了一步!然而,ALTER DATABASE ift2935 SET search_path TO inscriptions_devoir;,正如我所期待的那样,返回了ERROR: must be owner of database ift2935
    • 另外,您知道是否有办法告诉我Shortcut 自动运行这些shell 命令(作为文本,或作为我创建的bash 脚本的执行)?跨度>
    • ALTER DATABASEALTER ROLE 是持久的。您只需要运行一次,设置就会永久设置。
    • ALTER ROLE 完美!太感谢了。随意回答我的其他问题(来自我上一条评论,就在上面)。
    • 你会运行psql ... -c "commands go here"。希望我没有过早夸奖你,你应该好奇到psql文档页面看看。
    【解决方案2】:

    我认为您应该尝试使用 pgpass 文件。

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

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多