Иллюстрированный самоучитель по PostgreSQL

Дополнительные возможности клиента psql

Команды ввода-вывода

Команды ввода-вывода psql предназначены для импортирования и экспортирования данных, а также для настройки параметров пересылки данных.

  • \copy таблица { FROM | ТО }файл \ stdin | stdout. Команда позволяет скопировать данные, полученные от клиентского приложения (с правами пользователя, запустившего клиента), вместо копирования данных с сервера командой SQL COPY. Поддерживаются все стандартные элементы команды COPY. За дополнительной информацией о синтаксисе обращайтесь к описанию команды COPY (см. главу 14). Следует помнить о принципиальных различиях между командами \copy и COPY:
    • Данные, скопированные командой \copy, сначала передаются через клиентское приложение. При этом скорость копирования оказывается несколько ниже, чем при непосредственном копировании из серверного процесса.
    • Доступ к файлам локальной файловой системы предоставляется с правами учетной записи текущего пользователя. Таким образом, клиент может иметь расширенный (или наоборот, ограниченный) доступ к файлам по сравнению с серверным процессом.
    • Обозначения stdin и stdout (стандартный ввод и вывод) интерпретируются по-разному: в psql они относятся ко входному и выходному потокам. В контексте серверного процесса stdin представляет источник данных команды COPY, a stdout представляет выходной поток запроса.
  • \echo строка. Заданная строка передается в стандартный вывод. Команда часто используется при написании сценариев, поскольку с ее помощью можно включить в вывод сценария данные, не предоставляемые СУБД (например, комментарии).
  • \д [ файл ]. Команда выполнения буфера. Как и символ точки с запятой (;) в конце команды SQL, передает текущее содержимое буфера запроса серверу для обработки. Аргумент позволяет сохранить итоговый набор в заданном файле или передать его следующей программе для дальнейшей обработки.
  • \i файл. Чтение входных данных из файла с заданным именем. Содержимое файла интерпретируется так, словно оно было введено непосредственно в приглашении psql.
  • \lo_export old файл. Экспортирование больших объектов с заданным идентификатором объекта (OID) в локальную файловую систему. Отличается от функции сервера lo_export() так же, как команда \copy в psql отличается от команды COPY в SQL.
  • \lo_import файл [ комментарий ]. Импортирование больших объектов из локальной файловой системы в базу данных. К объекту можно присоединить необязательный комментарий; это рекомендуется делать, поскольку в противном случае на него можно будет ссылаться только по значению OID, которое придется запоминать для дальнейшего использования. Если присоединить к объекту комментарий, то команда \lo_list выведет комментарий вместе со значением OID объекта, что упростит его поиск после импортирования.
  • \о [ файл \ /команда ]. Перенаправление вывода (например, результатов выборки) в файл или его передача системной команде для дальнейшей обработки. Если аргумент не задан, перенаправление прекращается и происходит восстановление стандартного вывода. Особого внимания заслуживает возможность конвейерной (pipe) передачи вывода системным командам (например, дгер), что позволяет проводить поиск по шаблонам в выходных данных запросов и управляющих команд psql.
  • . Вывод текущего содержимого буфера psql. Если с момента выполнения последней команды новые данные не поступали, отображается последняя выполненная команда.
  • \qecho строка. Заданная строка направляется в канал вывода, заданный командой (вместо stdout). Команда обычно используется для включения дополнительной информации в выходной поток psql.
  • \w файл \ /команда. Текущий буфер запроса направляется в заданный файл или передается системной команде для дальнейшей обработки.

Системные команды

Следующая группа команд относится к общесистемным функциям psql – подключению к другой базе данных, вызову внешнего редактора, присваиванию значений переменным psql и завершению работы с клиентом.

  • \connect [ база_данных [ пользователь ] ]. Подключение к другой базе данных. Аргументы команды определяют базу данных и имя пользователя, под которым производится подключение (если оно отлично от текущего имени пользователя). Если последний аргумент не задан, используется текущее имя пользователя.
  • \edit [ файл ]. Запуск внешнего редактора, в котором загружается либо заданный файл, либо (при отсутствии аргумента) текущее содержимое буфера запроса. После завершения редактирования новое содержимое пересылается в буфер запроса или, если оно завершено символом точки с запятой (;), немедленно выполняется. При редактировании файла psql определяет, какой редактор следует запустить, просмотром следующих переменных среды (в указанном порядке): PSQL_EDITOR, EDITOR и VISUAL. Если ни одна из этих переменных не определена, psql пытается запустить команду /bin/vi.
  • \q. Завершение работы с программой. В большинстве терминальных приложений для выхода также используется комбинация клавиш CTRL + D.
  • \set [ переменная [ значение ] ]. Присваивание значений переменным среды. При вызове без аргументов команда выводит список всех текущих значений переменных среды, а при вызове с аргументами заданной переменной присваивается новое значение. При передаче нескольких значений переменной присваивается результат их конкатенации.
  • \unset переменная. Сброс, то есть удаление из памяти, переменных среды. Результат отличается от присваивания пустой строки, поскольку в этом случае переменная продолжает существовать в памяти.
  • \! [ команда ]. Выполнение внешних команд. При вызове без аргументов запускается сеанс командного интерпретатора, который временно замещает приглашение psql (до завершения сеанса). При вызове с аргументами заданная команда выполняется в psql, а результаты выводятся в stdout.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.