Автоматизация соединения с базой данных - PullRequest
0 голосов
/ 20 февраля 2019

Для домашней работы у меня есть несколько шагов, которые мне нужно пройти каждый раз, когда я хочу подключиться к базе данных, и это становится действительно раздражающим и напрасным занятием.

Я уже автоматизировалЧасть этого.Однако моя последняя попытка автоматизировать несколько последних команд не увенчалась успехом.

Изначально я настроил ярлык для терминала 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 после открытия ярлыка, чтобы все было установленои готов к работе (а на самом деле, может быть, даже , что можно каким-то образом автоматизировать с помощью ярлыка?).Тем не менее, как есть, мой сценарий оболочки запускает только команду psql -h postgres , которая успешно запускает PostGreSQL.

Мой вопрос:

Какполучить две другие команды (\c ift2935 и set search_path to inscriptions_devoir;) для автоматического запуска внутри PostGreSQL?


РЕДАКТИРОВАТЬ:

Забыл упомянуть: после первой командыиз моего сценария, я могу набрать \q, чтобы оставить PostGreSQL, а затем терминал выводит это:

-bash: c: command not found

Что, я думаю, указывает, что терминал прерывает свой текущий процесс для фактического запуска PostGreSQL и при выходе возобновляет выполнение сценария, переходя ко второй команде, которая завершается неудачей, поскольку \c ничего не значит как команда оболочки.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

При подключении к базе данных запустите:

ift2935=> ALTER ROLE <MY_USERNAME> SET search_path TO inscriptions_devoir;

Это пользователь вашей базы данных.Если не установлен PGUSER, он должен совпадать с именем пользователя вашей операционной системы, но вы всегда можете найти его с помощью SELECT current_user;.

. Тогда настройка будет автоматически активирована при следующем подключении.

В вашем сценарии оболочки измените вызов на

psql -h postgres -d ift2935

В качестве альтернативы, и немного лучше, на мой взгляд, следующая, более сложная процедура:

  • Отредактируйте файл .bash_profile в вашем домашнем каталоге и добавьте

    export PGHOST=postgres
    export PGDATABASE=ift2935
    

    Затем отключите и снова подключите (этот файл выполняется при запуске оболочки входа в систему).

  • Вместо запуска . sql.sh, просто наберите psql, что является менее громоздким.

Не по теме: Широко распространено мнение, что трудолюбие является двигателем прогресса.Ничто не может быть дальше от истины.Лень - мать изобретательности, особенно лень в сочетании с любопытством.Если вы планируете заняться компьютерным бизнесом, я обещаю вам светлое будущее.

0 голосов
/ 20 февраля 2019

Я думаю, вы должны попробовать использовать файл pgpass.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...