Скажем, мне нужно написать несколько запросов в консоли, каков наиболее эффективный способ выполнения многострочных запросов, таких как CREATE TABLE
операторы?
Я привык использовать Microsoft Management Studio, но теперь мне приходится изучать PostgreSQL на лету.
postgresql
Чад Харрисон
источник
источник
#
приглашение postgres появляется только по одной строке за раз, что отлично подходит для таких вещей, какCREATE DATABASE
илиALTER USER
. Как я смогу приятно отформатировать свой текст перед выполнением?Ответы:
На самом деле не существует такого понятия, как «многострочный запрос» - поскольку PostgreSQL заботится о том, что все эти пробелы и эти новые строки не имеют смысла (если они не встречаются внутри строки, или мы говорим о вкладках и так далее в
COPY
выражении или несколько других особых мест).Написание запросов «на консоли» через SSH обычно выполняется с помощью
psql
инструмента, который является интерактивным терминалом Postgres (дополнительную информацию см. В документации ).Вы можете передавать текстовые файлы , содержащие запросы в
psql
использовании-f
опции.Вы также можете передавать запросы
psql
в командную строку (в кавычках в зависимости от вашей оболочки) или передавать их через STDIN (стандартный поток ввода) - см.-c
Опцию.источник
Следующее приведет вас к интерактивному терминалу PostgreSQL:
Затем введите
\e
(или\edit
), чтобы открыть редактор (vi
по умолчанию):Написать запрос:
Наконец, сохраните и выйдите из своего редактора (например,
:wq
вvi
) иpsql
запустите только что написанный запрос.Чтобы установить другой редактор, например,
vim
илиnano
, установить одну из следующих переменных среды:PSQL_EDITOR
,EDITOR
,VISUAL
.Для получения дополнительной информации см. Https://www.postgresql.org/docs/current/app-psql.html и выполните поиск
\e
.источник
Вы можете записать запрос во временный файл и выполнить его с помощью
psql -f /path/to/temp/file
источник
Очевидно, но если кто-то не знает, вы можете написать многострочные операторы непосредственно в приглашении psql:
Обратите внимание на завершающий
;
символ - любая команда SQL будет выполняться только после его выдачи. Таким образом, самый простой способ - просто скопировать и вставить многострочные команды SQL с завершающим символом;
.источник