postgresql - 自动化数据库连接

标签 postgresql shell ssh automation putty

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

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

最初,我设置了一个指向 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打开我的快捷方式以完成所有设置并准备就绪后(实际上,甚至 that 可以通过快捷方式以某种方式自动化?)。然而,事实上,我的 shell 脚本只运行 psql -h postgres命令,成功启动PostGreSQL .

我的问题是:

如何让其他两个命令(\c ift2935set 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/

相关文章:

linux - 使用 NAnt 脚本的 SSH 连接

java - PostgreSQL 异常 : org. postgresql.util.PSQLException:发送到后端时发生 I/O 错误

json - 在 postgres 查询中执行 "running json concatenation"

bash - 尝试从 bash 中的字符串中检索前 5 个字符(仅数字和字母)

bash - SCP 进度条,如 bash 脚本中的 WGET

c - 以编程方式执行递归 ping shell 命令

ruby-on-rails - rvm和Capistrano:无法在Bitbucket “conq: repository access denied.”上克隆git存储库,但可以从服务器内部手动访问

ssh - SSH session 中的SSH session -VS代码

历史表中的 SQL LEFT JOIN

postgresql - 在 INSERT 期间计算列值