Скажем, мне нужно вручную написать несколько запросов в консоли, каков наиболее эффективный способ выполнения многострочных запросов, например CREATE TABLE
заявления?
Я привык использовать Microsoft Management Studio, но теперь мне приходится узнавать о PostgreSQL на лету.
Следующее приведет вас к интерактивному терминалу PostgreSQL:
$ psql <your database name>
Затем введите \e
(или \edit
), чтобы открыть редактор (vi
по умолчанию):
# \e
Напишите запрос:
select now();
Наконец, сохраните и закройте редактор (например, :wq
в vi
), и psql
выполнит только что написанный вами запрос.
Чтобы установить другой редактор, например vim
или nano
, установите одну из следующих переменных среды: PSQL_EDITOR
, EDITOR
, VISUAL
.
Для получения дополнительной информации см. https://www.postgresql.org/docs/current/app-psql.html и искать \e
.
На самом деле не существует такой вещи, как «многострочный запрос» - насколько заботит PostgreSQL, все эти пробелы и новые строки бессмысленны (если они не встречаются внутри строки или мы говорим о вкладках и т. COPY
заявление или несколько других специальных мест).
Запросы «на консоли» по SSH обычно выполняются с psql
инструмент, который представляет собой интерактивный терминал Postgres (см. документы для получения дополнительной информации).
Вы можете пройти текстовые файлы, содержащие запросы к psql
используя -f
вариант.
Вы также можете передавать запросы в psql
в командной строке (в кавычках, соответствующих вашей оболочке) или передать их через STDIN (стандартный поток ввода) - см. -c
вариант.
Вы можете записать запрос во временный файл и выполнить его с помощью psql -f /path/to/temp/file
Очевидно, но если кто-то не знает, вы можете писать многострочные операторы прямо в приглашении psql:
psql -h localhost -p 5432 -U postgres public
public=# SELECT
public=# *
public=# FROM
public=# mytable
public=# LIMIT 1;
Обратите внимание на конечный ;
символ - любая команда SQL будет выполняться только после ввода этого символа. Итак, самый простой способ - просто скопировать и вставить многострочные команды SQL с завершающим ;
.