Перейти к содержимому

Что позволяет модификатор s метакоманд psql

  • автор:

psql

psql — это интерфейс на основе терминала для PostgreSQL.. Он позволяет вводить запросы в интерактивном режиме, выдавать их PostgreSQL, и просматривать результаты запроса. В качестве альтернативы ввод может быть из файла или из аргументов командной строки. Кроме того, psql предоставляет ряд метакоманд и различные функции оболочки, облегчающие написание сценариев и автоматизацию широкого круга задач.

Options

Печатать все непустые входные строки в стандартный вывод по мере их чтения. (This не применяется к считываемым строкам interactively.) Это эквивалентно присвоению переменной ECHO значения all .

Переключает в режим невыровненного вывода. Режим вывода (The по умолчанию — aligned .) Это эквивалентно \pset format unaligned .

Печатать неудачные команды SQL в стандартный вывод ошибок. Это эквивалентно присвоению переменной ECHO значения errors .

-c command —command=command

Указывает, что psql должен выполнить данную командную строку command . Эту опцию можно повторять и комбинировать в любом порядке с опцией -f . Когда указан -c или -f , psql не считывает команды со стандартного ввода; вместо этого он завершается после последовательной обработки всех опций -c и -f .

command должен быть либо командной строкой, полностью поддающейся анализу сервером (i.e. которая не содержит специфичной для psql features),, либо одной командой обратной косой черты. Таким образом, вы не можете смешивать метакоманды SQL и psql в опции -c . Для этого вы можете использовать повторяющиеся параметры -c или передавать строку в psql, например:

psql -c '\x' -c 'SELECT * FROM foo;' 
echo '\x \\ SELECT * FROM foo;' | psql

( \\ это сепаратор meta-command.)

Каждая командная строка SQL, переданная -c , отправляется на сервер в виде отдельного запроса. Из-за этого сервер выполняет ее как единую транзакцию, даже если строка содержит несколько команд SQL, если только в строку не включены явные команды BEGIN / COMMIT для разделения ее на несколько транзакций. (See Section 55.2.2.1 для получения дополнительных сведений о том, как сервер обрабатывает несколько запросов strings.)

Если выполнение нескольких команд в одной транзакции нежелательно, используйте повторяющиеся команды -c или подайте несколько команд на стандартный ввод psql, либо с помощью эха, как показано выше, либо через оболочку здесь-документ, например:

psql EOF \x SELECT * FROM foo; EOF 

Переключение в режим вывода значений CSV (Comma-Separated. Это эквивалентно \pset format csv .

-d dbname —dbname=dbname

Указывает имя базы данных для подключения. Это эквивалентно указанию dbname в качестве первого аргумента, не являющегося параметром, в командной строке. dbname может быть connection string . В этом случае параметры строки подключения переопределяют любые конфликтующие параметры командной строки.

Также скопируйте все команды SQL, отправленные на сервер, в стандартный вывод. Это эквивалентно присвоению переменной ECHO значения queries .

Повторите фактические запросы, сгенерированные \d и другими командами обратной косой черты. Вы можете использовать это для изучения внутренних операций psql. Это эквивалентно присвоению переменной ECHO_HIDDEN значения on .

-f filename —file=filename

Чтение команд из файла filename , а не стандартного ввода. Эту опцию можно повторять и комбинировать в любом порядке с опцией -c . Когда указан либо -c , либо -f , psql не считывает команды со стандартного ввода; вместо этого он завершается после последовательной обработки всех параметров -c и -f . За исключением этого, эта опция во многом эквивалентна метакоманде \i .

Если filename — это — (hyphen),, то стандартный ввод читается до индикации EOF или метакоманды \q . Это можно использовать для чередования интерактивного ввода с вводом из файлов. Обратите внимание, однако, что Readline в этом случае не используется (так же, как если бы -n был specified).).

-F separator —field-separator=separator

Используйте separator в качестве разделителя полей для невыровненного вывода. Это эквивалентно \pset fieldsep или \f .

-h hostname —host=hostname

Указывает имя хоста машины, на которой работает сервер. Если значение начинается с косой черты, оно используется как каталог для сокета домена Unix.

Переключение в режим вывода HTML. Это эквивалентно команде \pset format html или \H .

Перечислите все доступные базы данных, затем выйдите. Другие варианты без подключения игнорируются. Это похоже на метакоманду \list .

При использовании этой опции psql будет подключаться к базе данных postgres , если в командной строке не указана другая база данных (опция -d или аргумент без опции, возможно, через служебную запись, но не через среду variable).

-L filename —log-file=filename

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

Не используйте Readline для редактирования строки и не используйте историю команд (см. the section called “Command-Line Editing” below).

-o filename —output=filename

Поместите все выходные данные запроса в файл filename . Это эквивалентно команде \o .

-p port —port=port

Указывает порт TCP или расширение файла сокета локального домена Unix, на котором сервер прослушивает соединения. По умолчанию используется значение переменной окружения PGPORT или, если оно не задано, порт, указанный во время компиляции, обычно 5432.

-P assignment —pset=assignment

Указывает параметры печати в стиле \pset . Обратите внимание, что здесь вы должны разделять имя и значение знаком равенства вместо пробела. Например, чтобы установить выходной формат LaTeX,, вы можете написать -P format=latex .

Указывает, что psql должен работать тихо. По умолчанию он печатает приветственные сообщения и различную информацию. Если эта опция используется, none этого не происходит. Это полезно с опцией -c . Это эквивалентно присвоению переменной QUIET значения on .

-R separator —record-separator=separator

Используйте separator в качестве разделителя записей для невыровненного вывода. Это эквивалентно \pset recordsep .

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

Работает в однострочном режиме, где новая строка завершает команду SQL, как это делает точка с запятой.

Note

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

-t —tuples-only

Отключите печать имен столбцов и нижних колонтитулов с количеством строк результатов и т. д. Это эквивалентно \t или \pset tuples_only .

-T table_options —table-attr=table_options

Указывает параметры, которые следует поместить в тег HTML table . Подробности см. в \pset tableattr .

-U username —username=username

Подключитесь к базе данных как пользователь username вместо пользователя по умолчанию. (You должен иметь на это разрешение course.).

-v assignment —set=assignment —variable=assignment

Выполните присвоение переменной, например метакоманду \set . Обратите внимание, что вы должны разделять имя и значение, если они есть, знаком равенства в командной строке. Чтобы сбросить переменную, оставьте знак равенства. Чтобы установить переменную с пустым значением, используйте знак равенства, но не вводите значение. Эти назначения выполняются во время обработки командной строки, поэтому переменные, отражающие состояние соединения, будут перезаписаны позже.

Распечатайте версию psql и выйдите.

Никогда не запрашивайте пароль. Если сервер требует аутентификации по паролю, а пароль недоступен из других источников, таких как файл .pgpass , попытка подключения завершится ошибкой. Этот параметр может быть полезен в пакетных заданиях и сценариях, где нет пользователя, который мог бы ввести пароль.

Обратите внимание, что этот параметр останется установленным для всего сеанса, поэтому он влияет на использование метакоманды \connect , а также на первоначальную попытку подключения.

Заставить psql запрашивать пароль перед подключением к базе данных, даже если пароль не будет использоваться.

Если сервер требует аутентификации по паролю, а пароль недоступен из других источников, таких как файл .pgpass , psql в любом случае запросит пароль. Однако psql потратит попытку подключения, обнаружив, что серверу требуется пароль. В некоторых случаях стоит ввести -W , чтобы избежать лишних попыток соединения.

Обратите внимание, что этот параметр останется установленным для всего сеанса, поэтому он влияет на использование метакоманды \connect , а также на первоначальную попытку подключения.

Включите режим форматирования расширенной таблицы. Это эквивалентно \x или \pset expanded .

Не читать файл запуска (ни общесистемный файл psqlrc , ни пользовательский ~/.psqlrc file).

Установите разделитель полей для невыровненного вывода равным нулю. Это эквивалентно \pset fieldsep_zero .

Установите разделитель записей для невыровненного вывода равным нулю. Это полезно для сопряжения, например, с xargs -0 . Это эквивалентно \pset recordsep_zero .

Эту опцию можно использовать только в сочетании с одной или несколькими опциями -c and/or -f . Это заставляет psql выдавать команду BEGIN перед первой такой опцией и команду COMMIT после последней, тем самым объединяя все команды в одну транзакцию. Если какая-либо из команд не удалась и была установлена переменная ON_ERROR_STOP , вместо нее отправляется команда ROLLBACK . Это гарантирует, что либо все команды завершатся успешно, либо никакие изменения не будут применены.

Если сами команды содержат BEGIN , COMMIT или ROLLBACK , эта опция не будет иметь желаемого эффекта. Кроме того, если отдельная команда не может быть выполнена внутри блока транзакции, указание этой опции приведет к сбою всей транзакции.

Показать справку о psql и выйти. Необязательный параметр topic (по умолчанию options ) выбирает, какая часть psql поясняется: commands описывает команды обратной косой черты psql; options описывает параметры командной строки, которые можно передать в psql; и variables показывает справку о переменных конфигурации psql.

Exit Status

psql возвращает оболочке 0, если он завершился нормально, 1, если возникла собственная фатальная ошибка (e.g. нехватка памяти, файл не found),, 2, если соединение с сервером прервалось и сеанс не был интерактивным, и 3, если произошла ошибка в сценарии и была установлена переменная ON_ERROR_STOP .

Usage

Подключение к базе данных

psql — это обычное клиентское приложение PostgreSQL. Чтобы подключиться к базе данных, вам необходимо знать имя вашей целевой базы данных, имя хоста и номер порта сервера, а также имя пользователя, под которым вы хотите подключиться. psql можно узнать об этих параметрах через параметры командной строки, а именно -d , -h , -p и -U соответственно. Если найден аргумент, который не принадлежит ни к одной из опций, он будет интерпретирован как имя базы данных (или имя пользователя, если имя базы данных уже given).). Не все эти параметры требуются; существуют полезные значения по умолчанию. Если вы не укажете имя хоста, psql подключится через сокет домена Unix к серверу на локальном хосте или через TCP/IP к localhost на машинах, не имеющих сокетов домена Unix. Номер порта по умолчанию определяется во время компиляции.Поскольку сервер базы данных использует то же значение по умолчанию, в большинстве случаев вам не нужно будет указывать порт. Имя пользователя по умолчанию — это имя пользователя вашей операционной системы, как и имя базы данных по умолчанию. Обратите внимание, что вы не можете просто подключиться к любой базе данных под любым именем пользователя. Ваш администратор базы данных должен был проинформировать вас о ваших правах доступа.

Когда значения по умолчанию не совсем правильные, вы можете сэкономить время на наборе текста, установив переменные среды PGDATABASE , PGHOST , PGPORT and/or PGUSER в соответствующие значения. Дополнительные переменные среды (For, см. Section 34.15 .) Также удобно иметь файл ~/.pgpass , чтобы избежать необходимости регулярно вводить пароли. См. Section 34.16 для получения дополнительной информации.

Альтернативный способ указания параметров подключения — строка conninfo или URI,, которые используются вместо имени базы данных. Этот механизм дает вам очень широкий контроль над соединением. Например:

$ psql "service=myservice sslmode=require" $ psql postgresql://dbmaster:5433/mydb?sslmode=require 

Таким образом, вы также можете использовать LDAP для поиска параметров соединения, как описано в Section 34.18 . См. Section 34.1.2 для получения дополнительной информации обо всех доступных вариантах подключения.

Если соединение не может быть установлено по какой-либо причине, (e.g., не имеет достаточных привилегий, сервер не работает на целевом хосте, etc.), psql вернет ошибку и завершит работу.

Если и стандартный ввод, и стандартный вывод являются терминалом, то psql устанавливает клиентскую кодировку на «авто», что определяет соответствующую клиентскую кодировку из настроек локали (переменная среды LC_CTYPE в Unix systems).. Если это не работает должным образом, клиентскую кодировку можно переопределить с помощью переменной среды PGCLIENTENCODING .

Ввод команд SQL

В обычном режиме psql выдает подсказку с именем базы данных, к которой в данный момент подключен psql, за которой следует строка => . Например:

$ psql testdb psql (15.3) Type "help" for help. testdb=>

В командной строке пользователь может ввести команды SQL. Обычно строки ввода отправляются на сервер при достижении точки с запятой в конце команды. Конец строки не завершает команду. Таким образом, команды могут быть распределены по нескольким строкам для ясности. Если команда была отправлена и выполнена без ошибок, результаты выполнения команды отображаются на экране.

Если у ненадежных пользователей есть доступ к базе данных, которая не приняла secure schema usage pattern , начните сеанс с удаления общедоступных схем из search_path . Можно добавить options=-csearch_path= в строку подключения или ввести SELECT pg_catalog.set_config(‘search_path’, », false) перед другими командами SQL. Это соображение относится не только к psql; он применяется к каждому интерфейсу для выполнения произвольных команд SQL.

Всякий раз, когда выполняется команда, psql также опрашивает события асинхронного уведомления, сгенерированные LISTEN и NOTIFY .

В то время как блочные комментарии в стиле C передаются на сервер для обработки и удаления, комментарии SQL-standard удаляются с помощью psql.

Meta-Commands

Все, что вы вводите в psql и начинается с обратной косой черты без кавычек, является метакомандой psql, которая обрабатывается самой psql. Эти команды делают psql более полезным для администрирования или сценариев. Метакоманды часто называют командами косой черты или обратной косой черты.

Формат команды psql — обратная косая черта, за которой сразу следует глагол команды, а затем любые аргументы. Аргументы отделяются от глагола команды и друг от друга любым количеством пробелов.

Чтобы включить пробел в аргумент, вы можете заключить его в одинарные кавычки. Чтобы включить одинарную кавычку в аргумент, напишите две одинарные кавычки в тексте, заключенном в одинарные кавычки. Все, что заключено в одинарные кавычки, также подлежит замене \n в стиле C (новый line), \t (tab), \b (backspace), \r (каретка return), \f (form feed), \ digits (octal), и \x ) digits (hexadecimal). Обратная косая черта, предшествующая любому другому символу в тексте, заключенном в одинарные кавычки, заключает в кавычки этот единственный символ, каким бы он ни был.

Если в аргументе появляется двоеточие без кавычек ( : ), за которым следует имя переменной psql, оно заменяется значением переменной, как описано в SQL Interpolation ниже. Описанные там формы :’variable_name’ и :»variable_name» тоже работают. Синтаксис : позволяет проверить, определена ли переменная. Он заменяется на TRUE или FALSE.. Обводка двоеточия с помощью обратной косой черты защищает его от замены.

Внутри аргумента текст, заключенный в обратные кавычки ( ` ), воспринимается как командная строка, которая передается оболочке. Вывод команды (с удаленным конечным символом новой строки) заменяет текст в обратных кавычках. В тексте, заключенном в обратные кавычки, не происходит никаких специальных кавычек или другой обработки, за исключением того, что появление :variable_name , где variable_name — это имя переменной psql, заменяется значением переменной. Кроме того, внешний вид :’variable_name’ заменяется значением переменной, соответствующим образом заключенным в кавычки, чтобы стать единственным аргументом команды оболочки. (The последний form почти всегда предпочтительнее, если только вы не уверены в том, что находится в variable.).

Некоторые команды принимают в качестве аргумента идентификатор SQL (например, имя таблицы). Эти аргументы следуют правилам синтаксиса SQL: буквы без кавычек принудительно преобразуются в нижний регистр, а двойные кавычки ( » ) защищают буквы от преобразования регистра и позволяют включать пробелы в идентификатор. Внутри двойных кавычек парные двойные кавычки сокращаются до одной двойной кавычки в результирующем имени. Например, FOO»BAR»BAZ интерпретируется как fooBARbaz , а «A weird»» name» становится A weird» name .

Анализ аргументов останавливается в конце строки или при обнаружении другой обратной косой черты без кавычек. Обратная косая черта без кавычек принимается за начало новой метакоманды. Специальная последовательность \\ (две обратные косые черты) отмечает конец аргументов и продолжает синтаксический анализ команд SQL, если таковые имеются. Таким образом, команды SQL и psql можно свободно смешивать в одной строке. Но в любом случае аргументы метакоманды не могут продолжаться дальше конца строки.

Многие метакоманды воздействуют на текущий буфер запроса. Это просто буфер, содержащий любой текст команды SQL, который был введен, но еще не отправлен на сервер для выполнения. Это будет включать предыдущие строки ввода, а также любой текст, появляющийся перед метакомандой в той же строке.

Определены следующие метакоманды:

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

\c или \connect [ -reuse-previous=on|off ] [ dbname [ username ] [ host ] [ port ] | conninfo ]

Устанавливает новое соединение с сервером PostgreSQL. Используемые параметры подключения можно указать либо с помощью позиционного синтаксиса (одно или несколько из имени базы данных, пользователя, хоста и port),, либо с помощью строки подключения conninfo , как подробно описано в Section 34.1.1 . Если аргументы не указаны, новое подключение создается с использованием тех же параметров, что и раньше.

Указание любого из dbname , username , host или port как — эквивалентно пропуску этого параметра.

Новое соединение может повторно использовать параметры соединения из предыдущего соединения; не только имя базы данных, пользователь, хост и порт, но и другие параметры, такие как sslmode . По умолчанию параметры повторно используются в позиционном синтаксисе, но не при задании строки conninfo . Передача первого аргумента -reuse-previous=on или -reuse-previous=off отменяет это значение по умолчанию. Если параметры используются повторно, то любой параметр, не указанный явно в качестве позиционного параметра или в строке conninfo , берется из параметров существующего соединения. Исключением является то, что при изменении предыдущего значения параметра host с использованием позиционного синтаксиса любой параметр hostaddr , присутствующий в параметрах существующего соединения, удаляется. Кроме того, любой пароль, используемый для существующего подключения, будет использоваться повторно только в том случае, если настройки пользователя, хоста и порта не изменены.

Если новое соединение установлено успешно, предыдущее соединение закрывается. Если попытка подключения не удалась (неправильное имя пользователя, отказ в доступе, etc.),), то предыдущее подключение будет сохранено, если psql находится в интерактивном режиме. Но при выполнении неинтерактивного сценария старое подключение закрывается и сообщается об ошибке. Это может или не может завершить сценарий; если это не так, все команды доступа к базе данных будут завершаться ошибкой до тех пор, пока другая команда \connect не будет успешно выполнена. с другой стороны, это не случайное воздействие на неправильную базу данных.Обратите внимание, что всякий раз, когда команда \connect пытается повторно использовать параметры, повторно используются значения последнего успешного подключения, а не любых неудачных попыток, предпринятых впоследствии.Однако,

=> \c mydb myuser host.dom 6432 => \c service=foo => \c "host=localhost port=5432 dbname=mydb connect_timeout=10 sslmode=disable" => \c -reuse-previous=on sslmode=require -- changes only sslmode => \c postgresql://tom@localhost/mydb?application_name=myapp

Устанавливает заголовок любых таблиц, печатаемых в результате запроса, или отменяет любой такой заголовок. Эта команда эквивалентна \pset title title . Название (The этой команды происходит от «caption», так как ранее оно использовалось только для установки заголовка в HTML table.).

Изменяет текущий рабочий каталог на directory . Без аргумента переходит в домашний каталог текущего пользователя.

Tip

Чтобы распечатать текущий рабочий каталог, используйте \! pwd .

Выводит информацию о текущем подключении к базе данных.

Выполняет фронтенд (клиентскую) копию. Это операция, которая запускает команду SQL COPY , но вместо чтения или записи указанного файла сервером psql читает или записывает файл и направляет данные между сервером и локальной файловой системой. Это означает, что доступ к файлам и привилегии принадлежат локальному пользователю, а не серверу, и привилегии суперпользователя SQL не требуются.

Когда указан program , command выполняется psql, а данные, передаваемые из или в command , маршрутизируются между сервером и клиентом. Опять же, привилегии выполнения принадлежат локальному пользователю, а не серверу, и привилегии суперпользователя SQL не требуются.

Для \copy . from stdin строки данных считываются из того же источника, который выдал команду, и продолжается до тех пор, пока не будет прочитан \. или поток не достигнет EOF.. Этот параметр полезен для заполнения таблиц в режиме реального времени в файле сценария SQL. Для \copy . to stdout выходные данные отправляются в то же место, что и выходные данные команды psql, а статус команды COPY count не печатается (поскольку его можно спутать с данными row).). Для стандартного ввода или вывода read/write psql, независимо от текущего источника команды или опции \o , напишите from pstdin или to pstdout .

Синтаксис этой команды аналогичен синтаксису команды SQL COPY . Все параметры, кроме data source/destination, указаны для COPY . По этой причине к метакоманде \copy применяются специальные правила синтаксического анализа. В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда считается аргументами \copy , и в аргументах не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек.

Tip

Другой способ получить тот же результат, что и \copy . to , — использовать команду SQL COPY . TO STDOUT и завершить ее с помощью \g filename или \g |program . В отличие от \copy , этот метод позволяет команде занимать несколько строк; также можно использовать переменную интерполяцию и расширение обратной кавычки.

Tip

Эти операции не так эффективны, как команда SQL COPY с источником или местом назначения файла или программы, поскольку все данные должны проходить через соединение client/server. Для больших объемов данных предпочтительнее использовать команду SQL.

Показывает авторские права и условия распространения PostgreSQL..

\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]

Выполняет текущий буфер запросов (например, \g ) и отображает результаты в сетке кросс-таблицы. Запрос должен возвращать не менее трех столбцов. Выходной столбец, идентифицированный colV , становится вертикальным заголовком, а выходной столбец, идентифицируемый colH , становится горизонтальным заголовком. colD определяет выходной столбец для отображения в сетке. sortcolH определяет необязательный столбец сортировки для горизонтального заголовка.

Каждая спецификация столбца может быть номером столбца (начиная с 1) или именем столбца. К именам столбцов применяются обычные правила свертывания регистра и заключения в кавычки SQL. Если опущено, colV берется как столбец 1, а colH — как столбец 2. colH должен отличаться от colV . Если colD не указан, то в результате запроса должно быть ровно три столбца, а столбец, который не является ни colV , ни colH , принимается за colD .

Вертикальный заголовок, отображаемый как крайний левый столбец, содержит значения из столбца colV в том же порядке, что и в результатах запроса, но с удаленными дубликатами.

Горизонтальный заголовок, отображаемый в первой строке, содержит значения из столбца colH с удаленными дубликатами. По умолчанию они отображаются в том же порядке, что и в результатах запроса. Но если задан необязательный аргумент sortcolH , он идентифицирует столбец, значения которого должны быть целыми числами, а значения из colH появятся в горизонтальном заголовке, отсортированные в соответствии с соответствующими значениями sortcolH .

Внутри кросс-таблицы для каждого уникального значения x colH и каждого уникального значения y colV ячейка, расположенная на пересечении (x,y) , содержит значение столбца colD в строке результата запроса, для которого значение colH равно x , а значение colV равно y . Если такой строки нет, ячейка пуста. Если таких строк несколько, выдается сообщение об ошибке.

Для каждого отношения (таблицы, представления, материализованного представления, индекса, последовательности или внешней таблицы) или составного типа, соответствующего pattern , отобразите все столбцы, их типы, табличное пространство (если оно не по умолчанию) и любые специальные атрибуты, такие как NOT NULL или значения по умолчанию. Также показаны связанные индексы, ограничения, правила и триггеры. Для внешних таблиц также отображается соответствующий внешний сервер. (“Matching шаблон» определен в Patterns below.)

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

Команда form \d+ идентична, за исключением того, что отображается больше information: отображаются любые комментарии, связанные со столбцами таблицы, а также наличие OIDs в таблице, определение представления, если отношение является представлением, параметр replica identity , отличный от значения по умолчанию, и имя access method , если отношение имеет метод доступа.

По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов.

Note

Если \d используется без аргумента pattern , он эквивалентен \dtvmsE , который покажет список всех видимых таблиц, представлений, материализованных представлений, последовательностей и сторонних таблиц. Это чисто мера удобства.

Перечисляет агрегатные функции вместе с их типом возвращаемого значения и типами данных, с которыми они работают. Если указан pattern , отображаются только агрегаты, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов.

Перечисляет методы доступа. Если указан pattern , отображаются только методы доступа, имена которых соответствуют шаблону. Если к имени команды добавляется + , каждый метод доступа отображается вместе с соответствующей функцией обработчика и описанием.

Перечисляет классы операторов (см. Section 38.16.1 ). Если указан access-method-pattern , перечислены только классы операторов, связанные с методами доступа, имена которых соответствуют этому шаблону. Если указан input-type-pattern , перечислены только классы операторов, связанные с типами ввода, имена которых соответствуют этому шаблону. Если к имени команды добавляется + , каждый класс операторов указывается вместе с соответствующим семейством операторов и владельцем.

Перечисляет семейства операторов (см. Section 38.16.5 ). Если указано access-method-pattern , будут перечислены только семейства операторов, связанные с методами доступа, имена которых соответствуют этому шаблону. Если указано input-type-pattern , будут перечислены только семейства операторов, связанные с типами ввода, имена которых соответствуют этому шаблону. Если к имени команды добавляется + , для каждого семейства операторов указывается его владелец.

Список операторов, связанных с семействами операторов (см. Section 38.16.2 ). Если указано access-method-pattern , будут перечислены только члены семейств операторов, связанных с методами доступа, имена которых соответствуют этому шаблону. Если указано operator-family-pattern , будут перечислены только члены семейств операторов, имена которых соответствуют этому шаблону. Если к имени команды добавляется + , каждый оператор указывается вместе с его семейством операторов сортировки (если это порядковый номер operator).).

Перечисляет вспомогательные функции, связанные с семействами операторов (см. Section 38.16.3 ). Если указан access-method-pattern , перечисляются только функции семейств операторов, связанных с методами доступа, имена которых соответствуют этому шаблону. Если указано operator-family-pattern , перечислены только функции семейств операторов, имена которых соответствуют этому шаблону. Если к имени команды добавляется + , функции отображаются подробно с фактическими списками параметров.

Перечисляет табличные пространства. Если указано pattern , отображаются только те табличные пространства, имена которых соответствуют шаблону. Если к имени команды добавляется + , каждое табличное пространство отображается с соответствующими параметрами, размером на диске, разрешениями и описанием.

Перечисляет преобразования между кодировками набора символов. Если указан pattern , перечисляются только преобразования, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов. Если к имени команды добавляется + , каждый объект отображается вместе с соответствующим ему описанием.

Перечисляет параметры конфигурации сервера и их значения. Если указано pattern , перечисляются только параметры, имена которых соответствуют шаблону. Без pattern перечислены только параметры, для которых установлены значения, отличные от значений по умолчанию. (Use \dconfig * для просмотра всех parameters.) Если к имени команды добавляется + , каждый параметр перечисляется с типом данных, контекстом, в котором параметр может быть установлен, и привилегиями доступа (если привилегии доступа не по умолчанию были granted).

Списки типов. Если указан pattern , перечисляются только приведения, исходные или целевые типы которых соответствуют шаблону. Если к имени команды добавляется + , каждый объект отображается вместе с соответствующим ему описанием.

Показывает описания объектов типа constraint , operator class , operator family , rule и trigger . Все остальные комментарии можно просмотреть с помощью соответствующих команд обратной косой черты для этих типов объектов.

\dd отображает описания объектов, соответствующих pattern , или видимых объектов соответствующего типа, если аргумент не задан. Но в любом случае перечислены только объекты, имеющие описание. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов.

Описания объектов можно создать с помощью команды COMMENT SQL.

Перечисляет домены. Если указано pattern , отображаются только домены, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов. Если к имени команды добавляется + , каждый объект отображается с соответствующими разрешениями и описанием.

Перечисляет настройки привилегий доступа по умолчанию. Запись отображается для каждой роли (и схемы, если применимо), для которой параметры привилегий по умолчанию были изменены по сравнению со встроенными значениями по умолчанию. Если указано pattern , будут перечислены только те записи, имя роли или имя схемы которых соответствует шаблону.

Команда ALTER DEFAULT PRIVILEGES используется для установки прав доступа по умолчанию. Значение дисплея привилегий объясняется в Section 5.7 .

К1482К Т2646Т В3138В З4391З К5031К Т6029Т

В этой группе команд буквы E , i , m , s , t и v обозначают внешнюю таблицу, индекс, материализованное представление, последовательность, таблицу и представление соответственно. Вы можете указать любую или все эти буквы в любом порядке, чтобы получить список объектов этих типов. Например, \dti перечисляет таблицы и индексы. Если к имени команды добавляется + , для каждого объекта отображается его статус сохранения (постоянный, временный или unlogged), физический размер на диске, а также соответствующее описание, если оно есть. Если указано pattern , в списке отображаются только объекты, имена которых соответствуют шаблону. По умолчанию отображаются только объекты, созданные пользователем; укажите шаблон или модификатор S , чтобы включить системные объекты.

Список внешних серверов (мнемоника: «внешний servers”).». Если указан pattern , в списке перечислены только те серверы, имя которых соответствует шаблону. Если используется form \des+ , отображается полное описание каждого сервера, включая привилегии доступа к серверу, тип, версию, параметры и описание.

Выводит список внешних таблиц (мнемоника: «внешний tables”).». Если указано pattern , в списке отображаются только записи, имя таблицы или имя схемы которых соответствует шаблону. Если используется form \det+ , также отображаются общие параметры и описание внешней таблицы.

Выводит список сопоставлений пользователей (мнемоника: «внешний users”).». Если указано pattern , перечисляются только те сопоставления, чьи имена пользователей соответствуют шаблону. Если используется form \deu+ , отображается дополнительная информация в form о каждом сопоставлении.

Caution

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

Выводит список оболочек сторонних данных (мнемоника: «внешний wrappers”). Если указан pattern , перечисляются только те оболочки сторонних данных, имя которых соответствует шаблону. Если используется form \dew+ , также отображаются привилегии доступа, параметры и описание оболочки сторонних данных.

Перечисляет функции вместе с их типами данных результатов, типами данных аргументов и типами функций, которые классифицируются как «agg», (aggregate),, «нормальный», «процедура», «триггер» или «окно». Чтобы отобразить только функции конкретного type(s),, добавьте к команде соответствующие буквы a , n , p , t или w . Если указано pattern , отображаются только функции, имена которых соответствуют шаблону. Любые дополнительные аргументы являются шаблонами имен типов, которые сопоставляются с именами типов первого, второго и т. д. аргументов функции. Функции (Matching могут иметь больше аргументов, чем указано вами. Чтобы этого не произошло, напишите прочерк — как последний arg_pattern .) По умолчанию отображаются только объекты, созданные пользователем; укажите шаблон или модификатор S для включения системных объектов. Если используется form \df+ ,

Перечисляет конфигурации текстового поиска. Если указан pattern , отображаются только конфигурации, имена которых соответствуют шаблону. Если используется form \dF+ , отображается полное описание каждой конфигурации, включая базовый анализатор текстового поиска и список словарей для каждого типа маркера анализатора.

Список словарей текстового поиска. Если указан pattern , отображаются только словари, имена которых соответствуют шаблону. Если используется form \dFd+ , для каждого выбранного словаря отображается дополнительная информация inform, включая базовый шаблон текстового поиска и значения параметров.

Список парсеров текстового поиска. Если указан pattern , отображаются только парсеры, имена которых соответствуют шаблону. Если используется form \dFp+ , отображается полное описание каждого синтаксического анализатора, включая базовые функции и список распознаваемых типов токенов.

Список шаблонов текстового поиска. Если указан pattern , отображаются только те шаблоны, имена которых соответствуют шаблону. Если используется form \dFt+ , для каждого шаблона отображается дополнительная информация inform, включая имена базовых функций.

Список ролей базы данных. (Since понятия «пользователи» и «группы» были объединены в «роли», эта команда теперь эквивалентна \du .) По умолчанию отображаются только роли, созданные пользователями; поставьте модификатор S , чтобы включить системные роли. Если указано pattern , перечислены только те роли, имена которых соответствуют шаблону. Если используется form \dg+ , для каждой роли отображается дополнительная информация inform; в настоящее время это добавляет комментарий для каждой роли.

Это псевдоним для \lo_list , который показывает список больших объектов. Если к имени команды добавляется + , каждый крупный объект отображается вместе с соответствующими разрешениями, если таковые имеются.

Перечисляет процедурные языки. Если указан pattern , перечислены только языки, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем языки; укажите модификатор S , чтобы включить системные объекты. Если к имени команды добавляется + , каждый язык указывается со своим обработчиком вызовов, средством проверки, привилегиями доступа и является ли он системным объектом.

Выводит список схем (namespaces). Если указано pattern , перечисляются только схемы, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов. Если к имени команды добавляется + , каждый объект отображается вместе с соответствующими разрешениями и описанием, если таковые имеются.

\do[S+] [ pattern [ arg_pattern [ arg_pattern ] ] ]

Перечисляет операторы с их операндами и типами результатов. Если указан pattern , будут перечислены только операторы, имена которых соответствуют шаблону. Если указан один arg_pattern , перечисляются только префиксные операторы, имя типа правого аргумента которых соответствует этому шаблону. Если указаны два arg_pattern , перечисляются только бинарные операторы, имена типов аргументов которых соответствуют этим шаблонам. (Alternatively, записывает — вместо неиспользуемого аргумента унарного operator.) По умолчанию отображаются только объекты, созданные пользователем; укажите шаблон или модификатор S для включения системных объектов. Если к имени команды добавляется + , отображается дополнительная информация о каждом операторе, в настоящее время это просто имя базовой функции.

Списки сопоставлений. Если указано pattern , перечисляются только сопоставления, имена которых соответствуют шаблону. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов. Если к имени команды добавляется + , каждая сортировка перечисляется вместе с соответствующим описанием, если таковое имеется. Обратите внимание, что показаны только параметры сортировки, используемые с текущей кодировкой базы данных, поэтому результаты могут различаться в разных базах данных одной и той же установки.

Перечисляет таблицы, представления и последовательности с соответствующими правами доступа. Если указано pattern , будут перечислены только те таблицы, представления и последовательности, имена которых соответствуют шаблону.

Команды GRANT и REVOKE используются для установки прав доступа. Значение дисплея привилегий объясняется в Section 5.7 .

Перечисляет разделенные отношения. Если указано pattern , будут перечислены только те записи, имя которых соответствует шаблону. Модификаторы t (таблицы) и i (индексы) могут быть добавлены к команде, фильтруя типы отношений для списка. По умолчанию перечислены секционированные таблицы и индексы.

Если используется модификатор n («вложенный») или указан шаблон, то включаются некорневые секционированные отношения, и отображается столбец, отображающий родителя каждой секционированной связи.

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

Перечисляет определенные параметры конфигурации. Эти параметры могут быть специфичными для роли, базы данных или и того, и другого. role-pattern и database-pattern используются для выбора определенных ролей и баз данных для списка соответственно. Если этот параметр опущен или указан * , будут перечислены все параметры, включая параметры, не относящиеся к роли или базе данных, соответственно.

Команды ALTER ROLE и ALTER DATABASE используются для определения параметров конфигурации для каждой роли и для каждой базы данных.

Список публикаций репликации. Если указано pattern , будут перечислены только те публикации, имена которых соответствуют шаблону. Если к имени команды добавляется + , также отображаются таблицы и схемы, связанные с каждой публикацией.

Список подписок на репликацию. Если указан pattern , перечислены только те подписки, имена которых соответствуют шаблону. Если к имени команды добавляется + , отображаются дополнительные свойства подписок.

Перечисляет типы данных. Если указан pattern , перечислены только типы, имена которых соответствуют шаблону. Если к имени команды добавляется + , для каждого типа указывается его внутреннее имя и размер, допустимые значения, если это тип enum , и связанные с ним разрешения. По умолчанию отображаются только созданные пользователем объекты; укажите шаблон или модификатор S для включения системных объектов.

Список ролей базы данных. (Since понятия «пользователи» и «группы» объединены в «роли», эта команда теперь эквивалентна \dg .) По умолчанию отображаются только роли, созданные пользователями; поставьте модификатор S , чтобы включить системные роли. Если указан pattern , перечислены только те роли, имена которых соответствуют шаблону. Если используется form \du+ , для каждой роли отображается дополнительная информация inform; в настоящее время это добавляет комментарий для каждой роли.

Список установленных расширений. Если указан pattern , перечислены только те расширения, имена которых соответствуют шаблону. Если используется form \dx+ , перечисляются все объекты, принадлежащие каждому соответствующему расширению.

Выводит расширенную статистику. Если указано pattern , отображаются только те расширенные статистические данные, имена которых соответствуют шаблону.

Статус каждого вида расширенной статистики отображается в столбце, названном в соответствии с типом статистики (e.g. Ndistinct). defined означает, что она была запрошена при создании статистики, а NULL означает, что она не запрашивалась. Вы можете использовать pg_stats_ext , если хотите знать, выполнялся ли ANALYZE и доступна ли статистика планировщику.

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

\e или \edit [ filename ] [ line_number ]

Если указан filename , файл редактируется; после выхода из редактора содержимое файла копируется в текущий буфер запроса. Если filename не указан, текущий буфер запроса копируется во временный файл, который затем редактируется таким же образом. Или, если текущий буфер запросов пуст, последний выполненный запрос копируется во временный файл и редактируется таким же образом.

Если вы редактируете файл или предыдущий запрос и выходите из редактора без изменения файла, буфер запроса очищается. В противном случае новое содержимое буфера запроса повторно анализируется в соответствии с обычными правилами psql, рассматривая весь буфер как одну строку. Любые полные запросы выполняются немедленно; то есть, если буфер запроса содержит точку с запятой или заканчивается ею, все до этой точки выполняется и удаляется из буфера запроса. Все, что осталось в буфере запроса, отображается повторно. Введите точку с запятой или \g , чтобы отправить его, или \r , чтобы отменить его, очистив буфер запроса.

Обработка буфера как одной строки в первую очередь влияет на метакоманды: все, что находится в буфере после метакоманды, будет восприниматься метакомандой как argument(s), даже если оно занимает несколько строк. (Thus таким образом нельзя создавать сценарии, использующие метакоманды. Используйте \i для that.)

Если указан номер строки, psql поместит курсор на указанную строку файла или буфера запроса. Обратите внимание, что если указан один аргумент, состоящий из цифр, psql предполагает, что это номер строки, а не имя файла.

Tip

См. Environment ниже, чтобы узнать, как сконфигурировать и настроить ваш редактор.

Печатает оцененные аргументы в стандартный вывод, разделенные пробелами и сопровождаемые новой строкой. Это может быть полезно для вкрапления информации в вывод скриптов. Например:

=> \echo `date` Tue Oct 26 21:40:57 CEST 1999 

Если первым аргументом является -n без кавычек, завершающий символ новой строки не записывается (и первый аргумент argument). не записывается).

Tip

Если вы используете команду \o для перенаправления вывода вашего запроса, вы можете использовать \qecho вместо этой команды. См. также \warn .

\ef [ function_description [ line_number ] ]

Эта команда извлекает и редактирует определение названной функции или процедуры в form команды CREATE OR REPLACE FUNCTION или CREATE OR REPLACE PROCEDURE . Редактирование производится так же, как и для \edit . Если вы выходите из редактора без сохранения, инструкция отбрасывается. Если вы сохраните и выйдете из редактора, обновленная команда будет выполнена немедленно, если вы добавили к ней точку с запятой. В противном случае он отображается повторно; введите точку с запятой или \g для отправки или \r для отмены.

Целевая функция может быть указана только по имени или по имени и аргументам, например foo(integer, text) . Типы аргументов должны быть указаны, если существует более одной функции с одним и тем же именем.

Если функция не указана, для редактирования предоставляется пустой шаблон CREATE FUNCTION .

Если указан номер строки, psql поместит курсор на указанную строку тела функции. (Note, что тело функции обычно не начинается с первой строки file.).

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда принимается за argument(s) из \ef , и в аргументах не выполняются ни переменная интерполяция, ни раскрытие обратных кавычек.

Tip

См. Environment ниже, чтобы узнать, как сконфигурировать и настроить ваш редактор.

\encoding [ encoding ]

Устанавливает кодировку набора символов клиента. Без аргумента эта команда показывает текущую кодировку.

Повторяет самое последнее сообщение об ошибке сервера с максимальной детализацией, как если бы для VERBOSITY было задано значение verbose , а для SHOW_CONTEXT — значение always .

\ev [ view_name [ line_number ] ]

Эта команда извлекает и редактирует определение именованного представления в form команды CREATE OR REPLACE VIEW . Редактирование производится так же, как и для \edit . Если вы выходите из редактора без сохранения, инструкция отбрасывается. Если вы сохраните и выйдете из редактора, обновленная команда будет выполнена немедленно, если вы добавили к ней точку с запятой. В противном случае он отображается повторно; введите точку с запятой или \g , чтобы отправить его, или \r , чтобы отменить.

Если представление не указано, для редактирования предоставляется пустой шаблон CREATE VIEW .

Если указан номер строки, psql поместит курсор на указанную строку определения вида.

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда считается argument(s) из \ev , и в аргументах не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек.

Устанавливает разделитель полей для невыровненного вывода запроса. По умолчанию используется вертикальная полоса ( | ). Он эквивалентен \pset fieldsep .

\g [ (option=value [. ]) ] [ filename ] \g [ (option=value [. ]) ] [ |command ]

Отправляет текущий буфер запроса на сервер для выполнения.

Если после \g появляются круглые скобки, они окружают разделенный пробелами список предложений параметров форматирования option = value , которые интерпретируются так же, как команды \pset option value , но действуют только на время выполнения этого запроса. В этом списке пробелы не допускаются вокруг знаков = , но обязательны между опционами. Если = value опущен, именованный option изменяется так же, как и для \pset option без явного value .

Если указан аргумент filename или | command , выходные данные запроса записываются в указанный файл или передаются заданной команде оболочки, а не отображаются, как обычно. Файл или команда записываются только в том случае, если запрос успешно возвращает ноль или более кортежей, а не в том случае, если запрос завершается ошибкой или является командой SQL, не возвращающей данные.

Если текущий буфер запроса пуст, вместо него повторно выполняется последний отправленный запрос. За исключением этого поведения, \g без каких-либо аргументов по существу эквивалентен точке с запятой. С аргументами \g представляет собой «однократную» альтернативу команде \o и дополнительно позволяет однократно корректировать параметры форматирования вывода, обычно устанавливаемые \pset .

Когда последний аргумент начинается с | , вся оставшаяся часть строки принимается за command для выполнения, и в ней не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек. Остальная часть строки просто буквально передается оболочке.

Показывает описание (то есть имена столбцов и типы данных) результата текущего буфера запроса. Запрос фактически не выполняется; однако, если он содержит какую-либо синтаксическую ошибку, об этой ошибке будет сообщено обычным образом.

Если текущий буфер запроса пуст, вместо него описывается самый последний отправленный запрос.

\getenv psql_var env_var

Получает значение переменной среды env_var и присваивает его переменной psql psql_var . Если env_var не определен в среде процесса psql, psql_var не изменяется. Пример:

=> \getenv home HOME => \echo :home /home/postgres

Отправляет текущий буфер запроса на сервер, затем обрабатывает каждый столбец каждой строки вывода запроса (если есть) как оператор SQL, подлежащий выполнению. Например, чтобы создать индекс для каждого столбца my_table :

=> SELECT format('create index on my_table(%I)', attname) -> FROM pg_attribute -> WHERE attrelid = 'my_table'::regclass AND attnum > 0 -> ORDER BY attnum -> \gexec CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX

Сгенерированные запросы выполняются в том порядке, в котором возвращаются строки, и слева направо в каждой строке, если имеется более одного столбца. Поля NULL игнорируются. Сгенерированные запросы буквально отправляются на сервер для обработки, поэтому они не могут быть метакомандами psql и не могут содержать ссылки на переменные psql. Если какой-либо отдельный запрос завершается ошибкой, выполнение оставшихся запросов продолжается, если не установлен ON_ERROR_STOP . Выполнение каждого запроса подлежит обработке ECHO . (Setting ECHO — all или queries часто рекомендуется при использовании \gexec .) Регистрация запросов, пошаговый режим, синхронизация и другие функции выполнения запросов также применяются к каждому сгенерированному запросу.

Если текущий буфер запроса пуст, вместо него повторно выполняется последний отправленный запрос.

Отправляет текущий буфер запроса на сервер и сохраняет выходные данные запроса в переменных psql (см. Variables below).). Выполняемый запрос должен возвращать ровно одну строку. Каждый столбец строки сохраняется в отдельной переменной с тем же именем, что и столбец. Например:

=> SELECT 'hello' AS var1, 10 AS var2 -> \gset => \echo :var1 :var2 hello 10 

Если вы укажете prefix , эта строка будет добавлена к именам столбцов запроса, чтобы создать имена переменных для использования:

=> SELECT 'hello' AS var1, 10 AS var2 -> \gset result_ => \echo :result_var1 :result_var2 hello 10 

Если результатом столбца является NULL,, соответствующая переменная не устанавливается, а не устанавливается.

Если запрос завершается ошибкой или не возвращает одну строку, никакие переменные не изменяются.

Если текущий буфер запроса пуст, вместо него повторно выполняется последний отправленный запрос.

\gx [ (option=value [. ]) ] [ filename ] \gx [ (option=value [. ]) ] [ |command ]

\gx эквивалентен \g , за исключением того, что он включает расширенный режим вывода для этого запроса, как если бы expanded=on был включен в список опций \pset . См. также \x .

\h или \help [ command ]

Предоставляет справку по синтаксису для указанной команды SQL. Если command не указан, тогда psql перечислит все команды, для которых доступна справка по синтаксису. Если command представляет собой звездочку ( * ), то отображается справка по синтаксису для всех команд SQL.

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда считается argument(s) из \help , и в аргументах не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек.

Note

Для упрощения ввода команды, состоящие из нескольких слов, можно не заключать в кавычки. Таким образом, можно ввести \help alter table .

\H или \html

Включает формат вывода запроса HTML. Если формат HTML уже включен, он переключается обратно на формат выровненного текста по умолчанию. Эта команда предназначена для совместимости и удобства, но см. \pset о настройке других параметров вывода.

\i или \include filename

Считывает ввод из файла filename и выполняет его, как если бы он был напечатан на клавиатуре.

Если filename — это — (hyphen),, то стандартный ввод считывается до индикации EOF или метакоманды \q . Это можно использовать для чередования интерактивного ввода с вводом из файлов. Обратите внимание, что поведение Readline будет использоваться только в том случае, если оно активно на самом внешнем уровне.

Note

Если вы хотите видеть строки на экране по мере их чтения, вы должны установить переменную ECHO в all .

\if expression \elif expression \else \endif

Эта группа команд реализует вложенные условные блоки. Условный блок должен начинаться с \if и заканчиваться \endif . Между ними может быть любое количество предложений \elif , за которыми может дополнительно следовать одно предложение \else . Обычные запросы и другие типы команд обратной косой черты могут (и обычно появляются) появляться между командами, образующими условный блок.

Команды \if и \elif считывают свои argument(s) и оценивают их как выражение Boolean. Если выражение дает true , то обработка продолжается в обычном режиме; в противном случае строки пропускаются до тех пор, пока не будет достигнуто соответствие \elif , \else или \endif . После успешного завершения теста \if или \elif аргументы более поздних команд \elif в том же блоке не оцениваются, а обрабатываются как false. Строки, следующие за \else , обрабатываются только в том случае, если ни одно из предыдущих сопоставлений \if или \elif не удалось.

Аргумент expression команды \if или \elif подлежит переменной интерполяции и расширению обратных кавычек, как и любой другой аргумент команды обратной косой черты. После этого он оценивается как значение опциональной переменной on/off. Таким образом, допустимым значением является любое однозначное совпадение без учета регистра для одного из: true , false , 1 , 0 , on , off , yes , no . Например, t , T и tR будут считаться true .

Выражения, которые неправильно оцениваются как true или false, будут генерировать предупреждение и рассматриваться как false.

Пропущенные строки обычно анализируются для идентификации запросов и команд обратной косой черты, но запросы не отправляются на сервер, а команды обратной косой черты, кроме условных ( \if , \elif , \else , \endif ), игнорируются. Условные команды проверяются только на допустимую вложенность. Ссылки на переменные в пропущенных строках не раскрываются, и раскрытие обратных кавычек также не выполняется.

Все команды обратной косой черты данного условного блока должны появляться в одном и том же исходном файле. Если EOF будет достигнут в основном входном файле или файле \include -ed до того, как все локальные \if -блоки будут закрыты, psql вызовет ошибку.

-- проверить наличие двух отдельных записей в базе данных и сохранить -- результаты в отдельных переменных psql SELECT EXISTS(SELECT 1 FROM customer WHERE customer_id = 123) as is_customer, EXISTS(SELECT 1 FROM employee WHERE employee_id = 456) as is_employee \gset \if :is_customer SELECT * FROM customer WHERE customer_id = 123; \elif :is_employee \echo 'is not a customer but is an employee' SELECT * FROM employee WHERE employee_id = 456; \else \if yes \echo 'not a customer or employee' \else \echo 'this will never print' \endif \endif

\ir или \include_relative filename

Команда \ir похожа на \i , но разрешает относительные имена файлов иначе. При выполнении в интерактивном режиме обе команды ведут себя одинаково. Однако при вызове из сценария \ir интерпретирует имена файлов относительно каталога, в котором находится сценарий, а не текущего рабочего каталога.

Перечислите базы данных на сервере и укажите их имена, владельцев, кодировку набора символов и права доступа. Если указано pattern , будут перечислены только базы данных, имена которых соответствуют шаблону. Если к имени команды добавляется + , также отображаются размеры базы данных, табличные пространства по умолчанию и описания. Информация (Size доступна только для баз данных, которые текущий пользователь может подключить to.)

\lo_export loid filename

Считывает большой объект с OID loid из базы данных и записывает его в filename . Обратите внимание, что это немного отличается от серверной функции lo_export , которая действует с разрешениями пользователя, от имени которого работает сервер базы данных, и в файловой системе сервера.

Tip

Используйте \lo_list , чтобы узнать OID. большого объекта.

\lo_import filename [ comment ]

Сохраняет файл в большом объекте PostgreSQL. При желании он связывает данный комментарий с объектом. Пример:

foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me' lo_import 152801

В ответе указано, что большой объект получил идентификатор объекта 152801, который можно использовать для доступа к вновь созданному большому объекту в будущем. Для удобочитаемости рекомендуется всегда связывать удобочитаемый комментарий с каждым объектом. И OIDs, и комментарии можно просмотреть с помощью команды \lo_list .

Обратите внимание, что эта команда слегка отличается от команды lo_import на стороне сервера, поскольку она действует как локальный пользователь в локальной файловой системе, а не как пользователь и файловая система сервера.

Отображает список всех крупных объектов PostgreSQL, хранящихся в настоящее время в базе данных, вместе с любыми предоставленными для них комментариями. Если к имени команды добавляется + , каждый крупный объект отображается вместе с соответствующими разрешениями, если таковые имеются.

Удаляет большой объект с OID loid из базы данных.

Tip

Используйте \lo_list , чтобы узнать OID. большого объекта.

\o или \out [ filename ] \o или \out [ |command ]

Обеспечивает сохранение будущих результатов запроса в файл filename или передачу будущих результатов команде оболочки command . Если аргумент не указан, вывод запроса сбрасывается до стандартного вывода.

Если аргумент начинается с | , то вся оставшаяся часть строки принимается за command для выполнения, и в ней не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек. Остальная часть строки просто буквально передается оболочке.

Результаты “Query» включают в себя все таблицы, ответы на команды и уведомления, полученные от сервера базы данных, а также выходные данные различных команд обратной косой черты, которые запрашивают базу данных (например, \d ); но не сообщения об ошибках.

Tip

Чтобы вставить вывод текста между результатами запроса, используйте \qecho .

\p или \print

Вывести текущий буфер запроса в стандартный вывод. Если текущий буфер запроса пуст, вместо него печатается последний выполненный запрос.

Изменяет пароль указанного пользователя (по умолчанию текущий user).). Эта команда запрашивает новый пароль, шифрует его и отправляет на сервер в виде команды ALTER ROLE . Это гарантирует, что новый пароль не появится открытым текстом в истории команд, журнале сервера или где-либо еще.

\prompt [ text ] name

Запрашивает у пользователя текст, который присваивается переменной name . Можно указать необязательную строку приглашения text . (For подсказки, состоящие из нескольких слов, окружают текст одиночными quotes.)

По умолчанию \prompt использует терминал для ввода и вывода. Однако, если использовался переключатель командной строки -f , \prompt использует стандартный ввод и стандартный вывод.

\pset [ option [ value ] ]

Эта команда устанавливает параметры, влияющие на вывод таблиц результатов запроса. option указывает, какая опция должна быть установлена. Семантика value зависит от выбранной опции. Для некоторых параметров пропуск value приводит к переключению или отключению параметра, как описано для конкретного параметра. Если такое поведение не упоминается, то при исключении value просто отображается текущая настройка.

\pset без каких-либо аргументов отображает текущее состояние всех параметров печати.

Настраиваемые параметры печати:

value должен быть числом. Как правило, чем выше число, тем больше границ и линий будет у таблиц, но детали зависят от конкретного формата. В формате HTML это будет преобразовано непосредственно в атрибут border=. . В большинстве других форматов имеют смысл только значения 0 (без border), 1 (внутреннее разделение lines), и 2 (рамка таблицы)), а значения выше 2 будут обрабатываться так же, как border = 2 . Форматы latex и latex-longtable дополнительно позволяют использовать значение 3 для добавления разделительных линий между строками данных.

Устанавливает целевую ширину для формата wrapped , а также ограничение ширины для определения того, достаточно ли широк выходной файл для использования пейджера или переключения на вертикальное отображение в расширенном автоматическом режиме. Ноль (по умолчанию) приводит к тому, что целевая ширина управляется переменной среды COLUMNS или обнаруженной шириной экрана, если COLUMNS не установлена. Кроме того, если columns равен нулю, формат wrapped влияет только на вывод на экран. Если columns отличен от нуля, то выходные данные файла и канала также переносятся на эту ширину.

Указывает разделитель полей, который будет использоваться в выходном формате CSV. Если символ-разделитель появляется в значении поля, это поле выводится в двойных кавычках в соответствии со стандартными правилами CSV. По умолчанию используется запятая.

Если указан value , это должен быть либо on , либо off , который будет включать или отключать расширенный режим, либо auto . Если value опущен, команда переключается между настройками включения и выключения. Когда расширенный режим включен, результаты запроса отображаются в двух столбцах, с именем столбца слева и данными справа. Этот режим полезен, если в обычном «горизонтальном» режиме данные не помещаются на экране. При автоматической настройке расширенный режим используется всякий раз, когда выходные данные запроса имеют более одного столбца и шире экрана; в противном случае используется обычный режим. Автоматическая настройка действует только в форматах с выравниванием и переносом. В других форматах всегда ведет себя так, будто расширенный режим выключен.

Указывает разделитель полей, который будет использоваться в невыровненном формате вывода. Таким образом можно создать, например, вывод, разделенный табуляцией, который могут предпочесть другие программы. Чтобы установить табуляцию в качестве разделителя полей, введите \pset fieldsep ‘\t’ . Разделителем полей по умолчанию является ‘|’ (вертикальный bar).).

Устанавливает разделитель полей для использования в невыровненном формате вывода на нулевой байт.

Если value указан, это должен быть либо on , либо off , который будет включать или отключать отображение нижнего колонтитула таблицы ( (n rows) count).. Если value опущен, команда включает или выключает отображение нижнего колонтитула.

Устанавливает формат вывода на один из aligned , asciidoc , csv , html , latex , latex-longtable , troff-ms , unaligned или wrapped . Допускаются уникальные сокращения.

Формат aligned — это стандартный, удобочитаемый, хорошо отформатированный текстовый вывод; это значение по умолчанию.

В формате unaligned все столбцы строки записываются в одну строку, разделенные текущим активным разделителем полей. Это полезно для создания выходных данных, которые могут быть предназначены для чтения другими программами, например, в формате, разделенном табуляцией или запятой. Однако символ-разделитель полей не обрабатывается особым образом, если он появляется в значении столбца; так что формат CSV может лучше подходить для таких целей.

Формат csv записывает значения столбцов, разделенные запятыми, применяя правила заключения в кавычки, описанные в RFC 4180 . Этот вывод совместим с форматом CSV серверной команды COPY . Строка заголовка с именами столбцов создается, если только параметр tuples_only не равен on . Заголовки и колонтитулы не печатаются. Каждая строка завершается системно-зависимым символом конца строки, который обычно представляет собой одну новую строку ( \n ) для Unix-подобных систем или последовательность возврата каретки и новой строки ( \r\n ) для Microsoft Windows. Символы разделителя полей, отличные от запятой, можно выбрать с помощью \pset csv_fieldsep .

Формат wrapped подобен aligned , но большие значения данных переносятся между строками, чтобы выходные данные соответствовали ширине целевого столбца. Ширина цели определяется, как описано для опции columns . Обратите внимание, что psql не будет пытаться переносить заголовки столбцов; поэтому формат wrapped ведет себя так же, как aligned , если общая ширина, необходимая для заголовков столбцов, превышает целевую.

В форматах asciidoc , html , latex , latex-longtable и troff-ms выводятся таблицы, предназначенные для включения в документы с использованием соответствующего языка разметки. Это не полные документы! Это может не понадобиться в HTML,, но в LaTeX у вас должна быть полная оболочка документа. Формат latex использует среду LaTeX tabular . Для формата latex-longtable требуются пакеты LaTeX longtable и booktabs .

Устанавливает стиль рисования линии границы на один из ascii , old-ascii или unicode . Допускаются уникальные сокращения. (That будет означать, что одна буква enough.). Значение по умолчанию — ascii . Этот параметр влияет только на выходные форматы aligned и wrapped .

В стиле ascii используются простые символы ASCII. Новые строки в данных отображаются с помощью символа + в правом поле. Когда формат wrapped переносит данные из одной строки в другую без символа новой строки, точка ( . ) отображается на правом поле первой строки и снова на левом поле следующей строки.

В стиле old-ascii используются простые символы ASCII с использованием стиля форматирования, используемого в PostgreSQL 8.4 и более ранних версиях. Новые строки в данных отображаются с использованием символа : вместо разделителя левого столбца. Когда данные переносятся с одной строки на другую без символа новой строки, вместо разделителя левого столбца используется символ ; .

В стиле unicode используются символы Unicode для рисования прямоугольников. Новые строки в данных отображаются с помощью символа возврата каретки в правом поле. Когда данные переносятся с одной строки на другую без символа новой строки, символ многоточия отображается на правом поле первой строки и снова на левом поле следующей строки.

Когда параметр border больше нуля, параметр linestyle также определяет символы, которыми рисуются линии границ. Обычные символы ASCII работают везде, но символы Unicode выглядят лучше на дисплеях, которые их распознают.

Задает строку, которая будет напечатана вместо значения null. По умолчанию ничего не печатается, что можно легко принять за пустую строку. Например, можно было бы предпочесть \pset null ‘(null)’ .

Если value указан, это должен быть либо on , либо off , который будет включать или отключать отображение характерного для локали символа для разделения групп цифр слева от десятичного маркера. Если value опущен, команда переключается между обычным и зависящим от локали числовым выводом.

Управляет использованием программы пейджера для запроса и вывода справки psql. Если установлена переменная среды PSQL_PAGER или PAGER , выходные данные направляются в указанную программу. В противном случае используется программа по умолчанию, зависящая от платформы (например, more ).

При использовании команды \watch для повторного выполнения запроса переменная среды PSQL_WATCH_PAGER вместо этого используется для поиска программы пейджера в системах Unix. Это настраивается отдельно, так как это может сбить с толку традиционные пейджеры, но его можно использовать для отправки вывода в инструменты, которые понимают выходной формат psql (например, pspg —stream ).

Когда опция pager равна off , программа пейджера не используется. Когда опция pager имеет значение on , пейджер используется, когда это необходимо, i.e. когда вывод идет на терминал и не помещается на экране. Параметр pager также может быть установлен на always , что приводит к тому, что пейджер будет использоваться для всех выходных данных терминала независимо от того, помещается ли он на экране. \pset pager без value включает и выключает использование пейджера.

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

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

Устанавливает разделитель записей для использования в невыровненном формате вывода на нулевой байт.

Т1482Т (или В2646В)

В формате HTML указывает атрибуты, которые должны быть помещены в тег table . Например, это может быть cellpadding или bgcolor . Обратите внимание, что вы, вероятно, не хотите указывать здесь border , так как \pset border уже позаботился об этом. Если value не указан, атрибуты таблицы не устанавливаются.

В формате latex-longtable это управляет пропорциональной шириной каждого столбца, содержащего тип данных с выравниванием по левому краю. Он указывается в виде списка значений, разделенных пробелами, например, ‘0.2 0.2 0.6’ . Неуказанные выходные столбцы используют последнее заданное значение.

Устанавливает заголовок таблицы для всех последующих распечатываемых таблиц. Это можно использовать для добавления описательных тегов к выходным данным. Если value не указан, заголовок сбрасывается.

tuples_only (или t )

Если указан value , это должен быть либо on , либо off , что будет включать или отключать режим только для кортежей. Если value опущен, команда переключается между обычным выводом и выводом только кортежей. Обычный вывод включает дополнительную информацию, такую как заголовки столбцов, заголовки и различные нижние колонтитулы. В режиме только кортежей отображаются только фактические данные таблицы.

Устанавливает стиль рисования границы для стиля линии unicode на один из single или double .

Устанавливает стиль рисования столбца для стиля линии unicode на один из single или double .

Устанавливает стиль рисования заголовка для стиля линии unicode на один из single или double .

Иллюстрации того, как выглядят эти разные форматы, можно увидеть на Examples ниже.

Tip

Существуют различные команды быстрого доступа для \pset . См. \a , \C , \f , \H , \t , \T и \x .

\q или \quit

Выход из программы psql. В файле сценария прекращается выполнение только этого сценария.

Эта команда идентична \echo , за исключением того, что вывод будет записан в выходной канал запроса, как установлено \o .

Сбрасывает (очищает) буфер запроса.

Распечатать историю командной строки psql на filename . Если filename опущен, история записывается в стандартный вывод (с использованием пейджера, если appropriate).). Эта команда недоступна, если psql был собран без поддержки Readline.

\set [ name [ value [ . ] ] ]

Устанавливает для переменной psql name значение value или, если задано более одного значения, объединение их всех. Если указан только один аргумент, переменной присваивается значение пустой строки. Чтобы сбросить переменную, используйте команду \unset .

\set без каких-либо аргументов отображает имена и значения всех установленных в данный момент переменных psql.

Допустимые имена переменных могут содержать буквы, цифры и символы подчеркивания. Подробнее см. Variables ниже. Имена переменных чувствительны к регистру.

Некоторые переменные являются особыми, поскольку они управляют поведением psql или автоматически устанавливаются для отображения состояния соединения. Эти переменные описаны в Variables ниже.

Note

Эта команда не связана с командой SQL SET .

\setenv name [ value ]

Задает для переменной среды name значение value или, если value не указано, отменяет установку переменной среды. Пример:

testdb=> \setenv PAGER less testdb=> \setenv LESS -imx4F

\sf[+] function_description

Эта команда извлекает и показывает определение названной функции или процедуры в form команды CREATE OR REPLACE FUNCTION или CREATE OR REPLACE PROCEDURE . Определение печатается в текущий выходной канал запроса, как установлено \o .

Целевая функция может быть указана только по имени или по имени и аргументам, например foo(integer, text) . Типы аргументов должны быть указаны, если существует более одной функции с одним и тем же именем.

Если к имени команды добавляется + , то выходные строки нумеруются, причем первой строкой тела функции является строка 1.

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда считается argument(s) из \sf , и в аргументах не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек.

Эта команда извлекает и показывает определение именованного представления в form команды CREATE OR REPLACE VIEW . Определение печатается в текущий выходной канал запроса, как установлено \o .

Если к имени команды добавляется + , то выходные строки нумеруются с 1.

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда принимается за argument(s) из \sv , и в аргументах не выполняется ни интерполяция переменных, ни раскрытие обратных кавычек.

Переключает отображение заголовков имен выходных столбцов и нижнего колонтитула количества строк. Эта команда эквивалентна \pset tuples_only и предназначена для удобства.

Указывает атрибуты, которые должны быть помещены в тег table в выходном формате HTML. Эта команда эквивалентна \pset tableattr table_options .

\timing [ on | off ]

С параметром включает отображение того, как долго каждый оператор SQL включается или выключается. Без параметра включает и выключает отображение. Отображение в миллисекундах; интервалы продолжительностью более 1 секунды также отображаются в формате minutes:seconds с добавлением полей часов и дней, если это необходимо.

Сбрасывает (удаляет) переменную psql name .

Большинство переменных, управляющих поведением psql, нельзя сбросить; вместо этого команда \unset интерпретируется как установка для них значений по умолчанию. См. Variables ниже.

\w или \write filename \w или \write | command

Записывает текущий буфер запроса в файл filename или передает его команде оболочки command . Если текущий буфер запросов пуст, вместо него записывается последний выполненный запрос.

Если аргумент начинается с | , то вся оставшаяся часть строки принимается за command для выполнения, и в ней не выполняются ни интерполяция переменных, ни раскрытие обратных кавычек. Остальная часть строки просто буквально передается оболочке.

Эта команда идентична \echo , за исключением того, что вывод будет записан в стандартный канал ошибок psql, а не в стандартный вывод.

Повторно выполнять текущий буфер запроса (как это делает \g ), пока не будет прерван или запрос не завершится ошибкой. Подождите указанное количество секунд (по умолчанию 2) между выполнениями. Каждый результат запроса отображается с заголовком, включающим строку \pset title (если any),, время начала запроса и интервал задержки.

Если текущий буфер запроса пуст, вместо него повторно выполняется последний отправленный запрос.

\x [ on | off | auto ]

Задает или переключает режим форматирования развернутой таблицы. Таким образом, он эквивалентен \pset expanded .

Перечисляет таблицы, представления и последовательности с соответствующими правами доступа. Если указан pattern , отображаются только те таблицы, представления и последовательности, имена которых соответствуют шаблону.

Это псевдоним для \dp («дисплей privileges”).

Без аргумента переходит в подоболочку; psql возобновляет работу при выходе из подоболочки. С аргументом выполняет команду оболочки command .

В отличие от большинства других метакоманд, вся оставшаяся часть строки всегда принимается за argument(s) из \! , и в аргументах не выполняется ни интерполяция переменных, ни раскрытие обратных кавычек. Остальная часть строки просто буквально передается оболочке.

Показывает справочную информацию. Необязательный параметр topic (по умолчанию commands ) выбирает, какая часть psql поясняется: commands описывает команды обратной косой черты psql; options описывает параметры командной строки, которые можно передать psql; и variables показывает справку о переменных конфигурации psql.

Обратная косая черта-точка с запятой не является метакомандой, как предыдущие команды; скорее, это просто вызывает добавление точки с запятой в буфер запроса без какой-либо дальнейшей обработки.

Обычно psql отправляет на сервер команду SQL, как только она достигает точки с запятой в конце команды, даже если в текущей строке остается больше ввода. Таким образом, например, ввод

select 1; select 2; select 3;

приведет к тому, что три команды SQL будут отправлены на сервер по отдельности, при этом результаты каждой из них будут отображаться перед переходом к следующей команде. Однако точка с запятой, введенная как \; , не инициирует обработку команды, поэтому команда перед ней и команда после эффективно объединяются и отправляются на сервер в одном запросе. Так например

select 1\; select 2\; select 3;

приводит к отправке трех команд SQL на сервер в одном запросе, когда достигается точка с запятой без обратной косой черты. Сервер выполняет такой запрос как одну транзакцию, если только в строку не включены явные команды BEGIN / COMMIT для разделения ее на несколько транзакций. (See Section 55.2.2.1 для получения дополнительных сведений о том, как сервер обрабатывает множественные запросы strings.).

Patterns

Различные команды \d принимают параметр pattern для указания отображаемого объекта name(s). В простейшем случае шаблон — это просто точное имя объекта. Символы в шаблоне обычно преобразуются в нижний регистр, как и в именах SQL; например, \dt FOO отобразит таблицу с именем foo . Как и в именах SQL, размещение шаблона в двойных кавычках прекращает преобразование в нижний регистр. Если вам нужно включить в шаблон фактический символ двойной кавычки, запишите его как пару двойных кавычек внутри последовательности двойных кавычек; опять же, это соответствует правилам для цитируемых идентификаторов SQL. Например, \dt «FOO»»BAR» отобразит таблицу с именем FOO»BAR (не foo»bar ). В отличие от обычных правил для имен SQL, вы можете заключать в двойные кавычки только часть шаблона, например, \dt FOO»FOO»BAR отобразит таблицу с именем fooFOObar .

Всякий раз, когда параметр pattern полностью опускается, команды \d отображают все объекты, видимые в текущем пути поиска схемы — это эквивалентно использованию * в качестве шаблона. Объект (An считается видимым, если содержащая его схема находится в пути поиска, и ни один объект того же типа и имени не появляется ранее в пути поиска. Это эквивалентно утверждению, что на объект можно ссылаться по имени без явной схемы. qualification.) Чтобы увидеть все объекты в базе данных независимо от видимости, используйте в качестве шаблона *.* .

Внутри шаблона * соответствует любой последовательности символов (включая отсутствие символов), а ? соответствует любому одиночному символу. Нотация (This сравнима с именем файла оболочки Unix patterns.). Например, \dt int* отображает таблицы, имена которых начинаются с int . Но в двойных кавычках * и ? теряют эти специальные значения и сопоставляются буквально.

Шаблон отношения, содержащий точку ( . ), интерпретируется как шаблон имени схемы, за которым следует шаблон имени объекта. Например, \dt foo*.*bar* отображает все таблицы, имя таблицы которых включает bar , которые находятся в схемах, имя схемы которых начинается с foo . Если точка не появляется, то шаблон соответствует только объектам, видимым в текущем пути поиска схемы. Опять же, точка в двойных кавычках теряет свое особое значение и соответствует буквально. Шаблон отношения, содержащий две точки ( . ), интерпретируется как имя базы данных, за которым следует шаблон имени схемы, за которым следует шаблон имени объекта. Часть имени базы данных не будет рассматриваться как шаблон и должна совпадать с именем базы данных, подключенной в данный момент, иначе возникнет ошибка.

Шаблон схемы, содержащий точку ( . ), интерпретируется как имя базы данных, за которым следует шаблон имени схемы. Например, \dn mydb.*foo* отображает все схемы, имя схемы которых включает foo . Часть имени базы данных не будет рассматриваться как шаблон и должна совпадать с именем базы данных, подключенной в данный момент, иначе возникнет ошибка.

Опытные пользователи могут использовать нотации регулярных выражений, такие как классы символов, например [0-9] для соответствия любой цифре. Все специальные символы регулярных выражений работают, как указано в Section 9.7.3 , за исключением . , который используется в качестве разделителя, как указано выше, * , который переводится в нотацию регулярного выражения .* , ? , который переводится в . , и $ , который соответствует буквально. При необходимости вы можете эмулировать эти символы шаблона, написав ? для . , (R+|) для R* или (R|) для R? . $ не требуется в качестве символа регулярного выражения, поскольку шаблон должен соответствовать полному имени, в отличие от обычной интерпретации регулярных выражений (другими словами, $ автоматически добавляется к вашему pattern).. Напишите * в начале and/or end, если вы не хотите, чтобы шаблон был привязан. Обратите внимание, что в двойных кавычках все специальные символы регулярных выражений теряют свое особое значение и сопоставляются буквально. Кроме того, специальные символы регулярного выражения сопоставляются буквально в шаблонах имен операторов (i.e., аргумент \do ).

Advanced Features

Variables

psql предоставляет функции подстановки переменных, аналогичные обычным командным оболочкам Unix. Переменные — это просто пары name/value, где значением может быть любая строка любой длины. Имя должно состоять из букв (включая цифры non-Latin letters), и символы подчеркивания.

Чтобы установить переменную, используйте метакоманду psql \set . Например,

testdb=> \set foo bar

устанавливает переменную foo в значение bar . Чтобы получить содержимое переменной, поставьте перед именем двоеточие, например:

testdb=> \echo :foo bar

Это работает как в обычных командах SQL, так и в метакомандах; подробнее см. SQL Interpolation ниже.

Если вы вызываете \set без второго аргумента, переменной присваивается значение пустой строки. Чтобы сбросить (i.e., (удалить) переменную, используйте команду \unset . Чтобы показать значения всех переменных, вызовите \set без каких-либо аргументов.

Note

Аргументы \set подчиняются тем же правилам замены, что и другие команды. Таким образом, вы можете создавать интересные ссылки, такие как \set :foo ‘something’ , и получать «мягкие ссылки» или «переменные-переменные» Perl или PHP, соответственно. К сожалению (или fortunately?),, с этими конструкциями нельзя сделать ничего полезного. С другой стороны, \set bar :foo — вполне допустимый способ копирования переменной.

psql специально обрабатывает ряд этих переменных. Они представляют собой определенные настройки параметров, которые можно изменить во время выполнения, изменив значение переменной, или, в некоторых случаях, представляют изменяемое состояние psql. По соглашению, все специально обработанные имена переменных состоят только из прописных букв ASCII (и, возможно, цифр и underscores).). Чтобы обеспечить максимальную совместимость в будущем, избегайте использования таких имен переменных в собственных целях.

Переменные, управляющие поведением psql, как правило, не могут быть сброшены или установлены на недопустимые значения. Команда \unset разрешена, но интерпретируется как установка значения переменной по умолчанию. Команда \set без второго аргумента интерпретируется как установка переменной в on для управляющих переменных, которые принимают это значение, и отклоняется для других. Кроме того, управляющие переменные, которые принимают значения on и off , также будут принимать другие распространенные варианты написания значений Boolean, такие как true и false .

Специально обработанные переменные:

AUTOCOMMIT

Когда on (default),) каждая команда SQL автоматически фиксируется после успешного завершения. Чтобы отложить фиксацию в этом режиме, вы должны ввести команду BEGIN или START TRANSACTION SQL. Когда off или не установлено, команды SQL не фиксируются, пока вы явно не выдадите COMMIT или END . Режим автоматической фиксации работает путем выдачи неявного Z264 6Z, непосредственно перед любой командой, которая еще не находится в блоке транзакций и сама по себе не является BEGIN или другой командой управления транзакцией, а также командой, которая не может быть выполнена внутри блока транзакций (например, VACUUM ).

Note

В режиме автоматической фиксации вы должны явно отказаться от любой неудачной транзакции, введя ABORT или ROLLBACK . Также имейте в виду, что если вы выйдете из сеанса без фиксации, ваша работа будет потеряна.

Note

Режим автоматической фиксации — это традиционное поведение PostgreSQL’s, но режим автоматической фиксации ближе к спецификации SQL. Если вы предпочитаете автоматическое отключение фиксации, вы можете установить его в общесистемном файле psqlrc или в файле ~/.psqlrc .

COMP_KEYWORD_CASE

Определяет регистр букв, который следует использовать при заполнении ключевого слова SQL. Если установлено значение lower или upper , завершенное слово будет в нижнем или верхнем регистре соответственно. Если установлено значение preserve-lower или preserve-upper (default),, завершенное слово будет в случае уже введенного слова, но слова, завершенные без ввода, будут в нижнем или верхнем регистре соответственно.

Имя базы данных, к которой вы в данный момент подключены. Это устанавливается каждый раз, когда вы подключаетесь к базе данных (включая программу start-up),, но ее можно изменить или отменить).

Если установлено значение all , все непустые строки ввода печатаются на стандартный вывод по мере их чтения. (This не применяется к считываемым строкам interactively.) Чтобы выбрать это поведение при запуске программы, используйте переключатель -a . Если установлено значение queries , psql выводит каждый запрос на стандартный вывод по мере его отправки на сервер. Переключатель для выбора этого поведения — -e . Если установлено значение errors , то в стандартном выводе ошибок отображаются только неудачные запросы. Переключатель для этого поведения — -b . Если установлено значение none (default),, то запросы не отображаются.

Если для этой переменной задано значение on и команда обратной косой черты запрашивает базу данных, сначала отображается запрос. Эта функция поможет вам изучить внутреннее устройство PostgreSQL и обеспечить аналогичную функциональность в ваших собственных программах. (To выберите это поведение при запуске программы, используйте переключатель -E .) Если вы установите для этой переменной значение noexec , запросы просто отображаются, но фактически не отправляются на сервер и не выполняются. Значение по умолчанию — off .

Текущая кодировка набора символов клиента. Это устанавливается каждый раз, когда вы подключаетесь к базе данных (включая программу start-up), и когда вы меняете кодировку с помощью \encoding , но ее можно изменить или отменить).

true , если последний запрос SQL не удался, false , если он был выполнен успешно. См. также SQLSTATE .

Если для этой переменной задано целочисленное значение больше нуля, результаты запросов SELECT извлекаются и отображаются в группах по такому количеству строк, а не по умолчанию, как сбор всего набора результатов перед отображением. Поэтому используется только ограниченный объем памяти, независимо от размера результирующего набора. При включении этой функции обычно используются значения от 100 до 1000. Имейте в виду, что при использовании этой функции запрос может завершиться ошибкой после того, как некоторые строки уже были отображены.

Tip

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

HIDE_TABLEAM

Если для этой переменной задано значение true , сведения о методе доступа к таблице не отображаются. Это в основном полезно для регрессионных тестов.

Если для этой переменной задано значение true , сведения о методе сжатия столбцов не отображаются. Это в основном полезно для регрессионных тестов.

Если для этой переменной задано значение ignorespace , строки, начинающиеся с пробела, не заносятся в список истории. Если установлено значение ignoredups , строки, соответствующие предыдущей строке истории, не вводятся. Значение ignoreboth объединяет эти два параметра. Если установлено значение none (default),), все строки, прочитанные в интерактивном режиме, сохраняются в списке истории.

Note

Эта функция была беззастенчиво скопирована с Bash.

Имя файла, которое будет использоваться для хранения списка истории. Если не установлено, имя файла берется из переменной среды PSQL_HISTORY . Если и это не установлено, по умолчанию используется ~/.psql_history или %APPDATA%\postgresql\psql_history в Windows. Например, поставив:

\set HISTFILE ~/.psql_history-:DBNAME

в ~/.psqlrc приведет к тому, что psql будет поддерживать отдельную историю для каждой базы данных.

Note

Эта функция была беззастенчиво скопирована с Bash.

Максимальное количество команд для сохранения в истории команд (по умолчанию 500).. Если установлено отрицательное значение, ограничение не применяется.

Note

Эта функция была беззастенчиво скопирована с Bash.

Хост сервера базы данных, к которому вы в данный момент подключены. Это устанавливается каждый раз, когда вы подключаетесь к базе данных (включая программу start-up),, но ее можно изменить или отменить).

Если установлено значение 1 или меньше, отправка символа EOF (обычно Control+D) в интерактивный сеанс psql завершит приложение. Если установлено большее числовое значение, столько последовательных символов EOF необходимо ввести, чтобы интерактивный сеанс завершился. Если для переменной установлено нечисловое значение, оно интерпретируется как 10. Значение по умолчанию — 0.

Note

Эта функция была беззастенчиво скопирована с Bash.

Значение последней затронутой OID,, возвращаемое командой INSERT или \lo_import . Эта переменная гарантированно действительна только до тех пор, пока не будет отображен результат следующей команды SQL. Серверы PostgreSQL, начиная с версии 12, больше не поддерживают системные столбцы OID, поэтому LATOID всегда будет 0 после INSERT при нацеливании на такие серверы.

Основное сообщение об ошибке и связанный с ним код SQLSTATE для самого последнего неудачного запроса в текущем сеансе psql или пустая строка и 00000 , если в текущем сеансе не было ошибок.

Если задано значение on , если инструкция в блоке транзакции генерирует ошибку, эта ошибка игнорируется и транзакция продолжается. При значении interactive такие ошибки игнорируются только в интерактивных сеансах, а не при чтении файлов сценариев. Если установлено значение off (default),, оператор в блоке транзакций, который генерирует ошибку, прерывает всю транзакцию. Режим отката ошибки работает путем выдачи неявного SAVEPOINT для вас непосредственно перед каждой командой, которая находится в блоке транзакций, а затем откат к точке сохранения, если команда не удалась.

По умолчанию обработка команды продолжается после ошибки. Если для этой переменной установлено значение on , обработка немедленно остановится. В интерактивном режиме psql вернется к командной строке; в противном случае psql завершит работу, вернув код ошибки 3, чтобы отличить этот случай от состояний фатальной ошибки, о которых сообщается с кодом ошибки 1. В любом случае любые выполняющиеся в данный момент сценарии (скрипт верхнего уровня, если таковой имеется, и любые другие сценарии, которые могут быть запущены) будут немедленно завершены. Если командная строка верхнего уровня содержит несколько команд SQL, обработка остановится на текущей команде.

Порт сервера базы данных, к которому вы в данный момент подключены. Это устанавливается каждый раз, когда вы подключаетесь к базе данных (включая программу start-up),, но ее можно изменить или отменить).

PROMPT1 PROMPT2 PROMPT3

Они определяют, как должны выглядеть подсказки psql. См. Prompting ниже.

Установка для этой переменной значения on эквивалентна параметру командной строки -q . Вероятно, это не слишком полезно в интерактивном режиме.

Количество строк, возвращенных или затронутых последним запросом SQL, или 0, если запрос завершился неудачно или не сообщил количество строк.

Номер версии сервера в виде строки, например 9.6.2 , 10.1 или 11beta1 , и в виде числа form , например 90602 или 100001 . Они устанавливаются каждый раз, когда вы подключаетесь к базе данных (включая программу start-up),, но их можно изменить или отменить).

Если для этой переменной задано значение off , вместо всех результатов отображается только последний результат комбинированного запроса ( \; ). По умолчанию используется on . Поведение выключено для совместимости со старыми версиями psql.

Для этой переменной можно задать значения never , errors или always , чтобы управлять отображением полей CONTEXT в сообщениях с сервера. Значение по умолчанию — errors (это означает, что контекст будет отображаться в сообщениях об ошибках, но не в уведомлении или предупреждении. messages). Этот параметр не действует, если для VERBOSITY установлено значение terse или sqlstate .

Установка этой переменной в on эквивалентна параметру командной строки -S .

Установка для этой переменной значения on эквивалентна параметру командной строки -s .

Код ошибки (см. Appendix A ), связанный с ошибкой последнего запроса SQL, или 00000 , если он был выполнен успешно.

Пользователь базы данных, под которым вы сейчас подключены. Это устанавливается каждый раз, когда вы подключаетесь к базе данных (включая программу start-up),, но ее можно изменить или отменить).

Для этой переменной можно задать значения default , verbose , terse или sqlstate для контроля детализации отчетов об ошибках. (See также \errverbose , для использования, когда вам нужна подробная версия ошибки, которую вы просто got.)

VERSION VERSION_NAME VERSION_NUM

Эти переменные устанавливаются при запуске программы, чтобы отразить версию psql, соответственно, в виде подробной строки, короткой строки ((e.g. 9.6.2 , 10.1 , или 11beta1 ) и числа ((e.g. 90602 или 100001 ). Их можно изменить или отменить.

SQL Interpolation

Ключевой особенностью переменных psql является то, что вы можете подставлять («интерполировать») их в обычные операторы SQL, а также в аргументы метакоманд. Кроме того, psql предоставляет средства для обеспечения правильного цитирования значений переменных, используемых в качестве литералов и идентификаторов SQL. Синтаксис интерполяции значения без заключения в кавычки заключается в добавлении к имени переменной двоеточия ( : ). Например,

testdb=> \set foo 'my_table' testdb=> SELECT * FROM :foo; 

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

Когда значение должно использоваться в качестве литерала или идентификатора SQL, безопаснее всего организовать его заключение в кавычки. Чтобы указать значение переменной как литерал SQL, напишите двоеточие, за которым следует имя переменной в одинарных кавычках. Чтобы указать значение как идентификатор SQL, напишите двоеточие, за которым следует имя переменной в двойных кавычках. Эти конструкции правильно обрабатывают кавычки и другие специальные символы, встроенные в значение переменной. Предыдущий пример было бы более безопасно написать так:

testdb=> \set foo 'my_table' testdb=> SELECT * FROM :"foo"; 

Интерполяция переменных не будет выполняться в цитируемых литералах и идентификаторах SQL. Следовательно, такая конструкция, как ‘:foo’ , не работает для создания литерала в кавычках из значения переменной (и было бы небезопасно, если бы она работала, поскольку она не будет правильно обрабатывать кавычки, встроенные в value).).

Одним из примеров использования этого механизма является копирование содержимого файла в столбец таблицы. Сначала загрузите файл в переменную, а затем интерполируйте значение переменной как строку в кавычках:

testdb=> \set content `cat my_file.txt` testdb=> INSERT INTO my_table VALUES (:'content'); 

(Note, что это по-прежнему не будет работать, если my_file.txt содержит байты NUL. psql не поддерживает встроенные байты NUL в переменной values.).

Поскольку в командах SQL разрешено появление двоеточий, явная попытка интерполяции (то есть :name , :’name’ или :»name» ) не заменяется, если именованная переменная не установлена в данный момент. В любом случае вы можете экранировать двоеточие обратной косой чертой, чтобы защитить его от подстановки.

Специальный синтаксис : возвращает TRUE или FALSE в зависимости от того, существует переменная или нет, и, таким образом, всегда подставляется, если двоеточие не экранировано обратной косой чертой.

Синтаксис двоеточия для переменных является стандартным SQL для встроенных языков запросов, таких как ECPG.. Синтаксис двоеточия для фрагментов массива и приведения типов является расширениями PostgreSQL, которые иногда могут конфликтовать со стандартным использованием. Синтаксис двоеточия-кавычки для экранирования значения переменной как литерала или идентификатора SQL является расширением psql.

Prompting

Подсказки о проблемах psql можно настроить по своему усмотрению. Три переменные PROMPT1 , PROMPT2 и PROMPT3 содержат строки и специальные управляющие последовательности, описывающие внешний вид подсказки. Подсказка 1 — это обычная подсказка, которая выдается, когда psql requests вводит новую команду. Подсказка 2 выдается, когда во время ввода команды ожидается ввод дополнительных данных, например, если команда не была завершена точкой с запятой или кавычка не была закрыта. Подсказка 3 выдается, когда вы запускаете команду SQL COPY FROM STDIN и вам нужно ввести значение строки на терминале.

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

Полное имя хоста (с доменным именем) сервера базы данных или [local] , если соединение осуществляется через сокет домена Unix, или [local:/dir/name] , если сокет домена Unix не находится в скомпилированном расположении по умолчанию.

Имя хоста сервера базы данных, усеченное до первой точки, или [local] , если соединение осуществляется через сокет домена Unix.

Номер порта, на котором прослушивается сервер базы данных.

Имя пользователя сеанса базы данных. (The расширение этого значения может измениться во время сеанса базы данных в результате выполнения команды SET SESSION AUTHORIZATION .)

Имя текущей базы данных.

Подобно %/ , но вывод ~ (тильда), если база данных является вашей базой данных по умолчанию.

Если пользователь сеанса является суперпользователем базы данных, то # , иначе > . Расширение (The этого значения может измениться во время сеанса базы данных в результате выполнения команды SET SESSION AUTHORIZATION .)

Идентификатор процесса серверной части, к которой в данный момент подключено.

В приглашении 1 обычно = , но @ , если сеанс находится в неактивной ветви условного блока, или ^ , если в однострочном режиме, или ! , если сеанс отключен от базы данных (что может произойти, если \connect fails). В приглашении 2 %R заменяется символом, который зависит от того, почему psql ожидает больше ввода: еще не был завершен, но * , если есть незаконченный комментарий /* . */ , одинарная кавычка, если есть незаконченная строка в кавычках, двойная кавычка, если есть незавершенный идентификатор в кавычках, знак доллара, если есть незаконченная строка в долларовых кавычках, или ( , если есть несопоставленная левая скобка.В приглашении 3 %R ничего не производит.

Состояние транзакции: пустая строка, если нет блока транзакции, или * , если в блоке транзакции, или ! , если в блоке транзакции с ошибкой, или ? , когда состояние транзакции неопределенно (например, из-за отсутствия connection).).

Номер строки внутри текущего оператора, начиная с 1 .

Заменяется символ с указанным восьмеричным кодом.

Значение переменной psql name . Подробнее см. Variables выше.

Вывод command аналогичен обычной подстановке «обратная галочка».

Подсказки могут содержать символы управления терминалом, которые, например, изменяют цвет, фон или стиль текста подсказки или изменяют заголовок окна терминала. Чтобы функции редактирования строки Readline работали правильно, эти непечатаемые управляющие символы должны быть обозначены как невидимые, окружив их %[ и %] . Несколько пар из них могут встречаться в подсказке. Например:

testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# ' 

приводит к появлению полужирного ( 1; ) желтого на черном ( 33;40 ) приглашения на терминалах VT100-compatible, с поддержкой цвета.

Пробелы той же ширины, что и самый последний вывод PROMPT1 . Это можно использовать в качестве параметра PROMPT2 , чтобы многострочные операторы выравнивались с первой строкой, но не отображалось вторичное приглашение.

Чтобы вставить знак процента в приглашение, напишите %% . Подсказки по умолчанию: ‘%/%R%x%# ‘ для подсказок 1 и 2 и ‘>> ‘ для подсказки 3.

Note

Эта функция была беззастенчиво скопирована с tcsh.

Command-Line Editing

psql использует Readline или libedit library, если они доступны, для удобного редактирования и поиска строк. История команд автоматически сохраняется при выходе из psql и перезагружается при запуске psql. Нажмите стрелку вверх или Control-P, чтобы получить предыдущие строки.

Вы также можете использовать завершение с помощью табуляции для заполнения частично введенных ключевых слов и имен объектов SQL во многих (но не во всех) контекстах. Например, в начале команды введите ins и нажмите TAB, чтобы ввести insert into . Затем, набрав несколько символов имени таблицы или схемы и нажав TAB , вы заполните незаконченное имя или предложите меню возможных дополнений, если их несколько. (Depending на используемом library, вам может потребоваться нажать TAB более одного раза, чтобы получить menu.)

Завершение с помощью табуляции для имен объектов SQL требует отправки запросов на сервер для поиска возможных совпадений. В некоторых контекстах это может мешать другим операциям. Например, после BEGIN будет слишком поздно выдавать SET TRANSACTION ISOLATION LEVEL , если между ними будет выдан запрос на завершение табуляции. Если вам вообще не нужно автодополнение табуляции, вы можете отключить его навсегда, поместив это в файл с именем .inputrc в вашем домашнем каталоге:

$if psql set disable-completion on $endif 

(This — это не psql, а функция Readline. Прочитайте его документацию для дальнейшего details.)

Параметр командной строки -n ( —no-readline ) также может быть полезен для отключения использования Readline для одного запуска psql. Это предотвращает завершение табуляции, использование или запись истории командной строки и редактирование многострочных команд. Это особенно полезно, когда вам нужно скопировать и вставить текст, содержащий символы TAB .

Environment

Если \pset columns равен нулю, управляет шириной формата wrapped и шириной для определения того, требуется ли широкий вывод для пейджера или следует переключиться на вертикальный формат в расширенном автоматическом режиме.

PGDATABASE PGHOST PGPORT PGUSER

Параметры подключения по умолчанию (см. Section 34.15 ).

Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения: always , auto и never .

PSQL_EDITOR EDITOR VISUAL

Редактор, используемый командами \e , \ef и \ev . Эти переменные проверяются в указанном порядке; используется первый установленный. Если установлен none из них, по умолчанию используется vi в системах Unix или notepad.exe в системах Windows.

Когда \e , \ef или \ev используются с аргументом номера строки, эта переменная указывает аргумент командной строки, используемый для передачи начального номера строки в пользовательский редактор. Для таких редакторов, как Emacs или vi, это плюс. Включите пробел в конце значения переменной, если между именем параметра и номером строки должен быть пробел. Примеры:

PSQL_EDITOR_LINENUMBER_ARG='+' PSQL_EDITOR_LINENUMBER_ARG='--line ' 

По умолчанию используется + в системах Unix (соответствует редактору по умолчанию vi и полезен для многих других распространенных editors);, но в системах Windows нет значения по умолчанию.

Альтернативное расположение файла истории команд. Расширение Tilde ( ~ ) выполнено.

Если результаты запроса не помещаются на экране, они передаются через эту команду. Типичными значениями являются more или less . Использование пейджера можно отключить, установив для PSQL_PAGER или PAGER пустую строку или настроив связанные с пейджером параметры команды \pset . Эти переменные проверяются в указанном порядке; используется первый установленный. Если установлен none из них, по умолчанию используется more на большинстве платформ, но less на Cygwin.

Когда запрос выполняется повторно с помощью команды \watch , пейджер по умолчанию не используется. Это поведение можно изменить, настроив PSQL_WATCH_PAGER на команду пейджера в системах Unix. Пейджер pspg (не часть PostgreSQL, но доступный во многих дистрибутивах программного обеспечения с открытым исходным кодом) может отображать вывод \watch , если он запущен с опцией —stream .

Альтернативное расположение файла .psqlrc пользователя. Расширение Tilde ( ~ ) выполнено.

Команда, выполняемая командой \! .

Каталог для хранения временных файлов. По умолчанию используется /tmp .

Эта утилита, как и большинство других утилит PostgreSQL, также использует переменные среды, поддерживаемые libpq (см. Section 34.15 ).

Files

psqlrc и ~/.psqlrc

Если не передан параметр -X , psql пытается прочитать и выполнить команды из общесистемного файла запуска ( psqlrc ), а затем из личного файла запуска пользователя ( ~/.psqlrc ) после подключения к базе данных, но до принятия обычных команд. Эти файлы можно использовать для настройки клиента and/or сервера по вкусу, обычно с помощью команд \set и SET .

Общесистемный файл запуска называется psqlrc . По умолчанию он ищется в каталоге установки «конфигурация системы», который наиболее надежно идентифицируется при запуске pg_config —sysconfdir . Обычно это каталог ../etc/ относительно каталога, содержащего исполняемые файлы PostgreSQL. Каталог для поиска можно указать явно с помощью переменной среды PGSYSCONFDIR .

Личный файл запуска пользователя называется .psqlrc и ищется в домашнем каталоге вызывающего пользователя. В Windows личный файл запуска называется %APPDATA%\postgresql\psqlrc.conf . В любом случае этот путь к файлу по умолчанию можно переопределить, задав переменную среды PSQLRC .

Как общесистемный файл запуска, так и личный файл запуска пользователя можно сделать специфичным для версии psql, добавив к имени файла тире и основной или дополнительный идентификатор версии PostgreSQL, например ~/.psqlrc-15 или ~/.psqlrc-15.3 . Наиболее конкретный файл, соответствующий версии, будет прочитан, а не файл, не зависящий от версии. Эти суффиксы версий добавляются после определения пути к файлу, как описано выше.

История командной строки хранится в файле ~/.psql_history или %APPDATA%\postgresql\psql_history в Windows.

Расположение файла истории можно указать явно через переменную HISTFILE psql или переменную среды PSQL_HISTORY .

Notes

  • psql лучше всего работает с серверами той же или более старой основной версии. Команды с обратной косой чертой, скорее всего, не будут работать, если сервер имеет более новую версию, чем сам psql. Однако команды обратной косой черты семейства \d должны работать с серверами версий до 9.2,, хотя и не обязательно с серверами более новыми, чем сам psql. Общая функциональность запуска команд SQL и отображения результатов запроса также должна работать с серверами более новой основной версии, но это не может быть гарантировано во всех случаях. Если вы хотите использовать psql для подключения к нескольким серверам разных основных версий, рекомендуется использовать новейшую версию psql. В качестве альтернативы вы можете хранить копию psql каждой основной версии и обязательно использовать версию, соответствующую соответствующему серверу. Но на практике в этом дополнительном усложнении не должно быть необходимости.
  • До PostgreSQL 9.6, вариант -c подразумевал -X ( —no-psqlrc ); это уже не так.
  • До PostgreSQL 8.4, psql позволял первому аргументу однобуквенной обратной косой черты начинаться непосредственно после команды, без промежуточных пробелов. Теперь требуется некоторое количество пробелов.

Примечания для пользователей Windows

psql построен как «консольное приложение». Поскольку в окнах консоли Windows используется другая кодировка, чем в остальной части системы, необходимо соблюдать особую осторожность при использовании 8-битных символов в psql. Если psql обнаружит проблемную кодовую страницу консоли, он предупредит вас при запуске. Чтобы изменить кодовую страницу консоли, необходимы две вещи:

  • Установите кодовую страницу, введя cmd.exe /c chcp 1252 . (1252 — это кодовая страница, подходящая для немецкого языка; замените ее на value.). Если вы используете Cygwin, вы можете поместить эту команду в /etc/profile .
  • Установите консольный шрифт на Lucida Console , так как растровый шрифт не работает с кодовой страницей ANSI.

Examples

В первом примере показано, как распределить команду по нескольким строкам ввода. Обратите внимание на изменяющуюся подсказку:

testdb=> CREATE TABLE my_table ( testdb(> first integer not null default 0, testdb(> second text) testdb-> ; CREATE TABLE 

Теперь снова взгляните на определение таблицы:

testdb=> \d my_table Table "public.my_table" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- first | integer | | not null | 0 second | text | | | 

Теперь меняем подсказку на что-то более интересное:

testdb=> \set PROMPT1 '%n@%m %~%R%# ' peter@localhost testdb=>

Предположим, вы заполнили таблицу данными и хотите взглянуть на них:

peter@localhost testdb=> SELECT * FROM my_table; first | second -------+-------- 1 | one 2 | two 3 | three 4 | four (4 rows)

Вы можете отображать таблицы различными способами с помощью команды \pset :

peter@localhost testdb=> \pset border 2 Border style is 2. peter@localhost testdb=> SELECT * FROM my_table; +-------+--------+ | first | second | +-------+--------+ | 1 | one | | 2 | two | | 3 | three | | 4 | four | +-------+--------+ (4 rows) peter@localhost testdb=> \pset border 0 Border style is 0. peter@localhost testdb=> SELECT * FROM my_table; first second ----- ------ 1 one 2 two 3 three 4 four (4 rows) peter@localhost testdb=> \pset border 1 Border style is 1. peter@localhost testdb=> \pset format csv Output format is csv. peter@localhost testdb=> \pset tuples_only Tuples only is on. peter@localhost testdb=> SELECT second, first FROM my_table; one,1 two,2 three,3 four,4 peter@localhost testdb=> \pset format unaligned Output format is unaligned. peter@localhost testdb=> \pset fieldsep '\t' Field separator is " ". peter@localhost testdb=> SELECT second, first FROM my_table; one 1 two 2 three 3 four 4 

В качестве альтернативы используйте короткие команды:

peter@localhost testdb=> \a \t \x Output format is aligned. Tuples only is off. Expanded display is on. peter@localhost testdb=> SELECT * FROM my_table; -[ RECORD 1 ]- first | 1 second | one -[ RECORD 2 ]- first | 2 second | two -[ RECORD 3 ]- first | 3 second | three -[ RECORD 4 ]- first | 4 second | four

Кроме того, эти параметры формата вывода можно установить только для одного запроса с помощью \g :

peter@localhost testdb=> SELECT * FROM my_table peter@localhost testdb-> \g (format=aligned tuples_only=off expanded=on) -[ RECORD 1 ]- first | 1 second | one -[ RECORD 2 ]- first | 2 second | two -[ RECORD 3 ]- first | 3 second | three -[ RECORD 4 ]- first | 4 second | four

Вот пример использования команды \df для поиска только функций с именами, соответствующими int*pl , и вторым аргументом которых является тип bigint :

testdb=> \df int*pl * bigint List of functions Schema | Name | Result data type | Argument data types | Type ------------+---------+------------------+---------------------+------ pg_catalog | int28pl | bigint | smallint, bigint | func pg_catalog | int48pl | bigint | integer, bigint | func pg_catalog | int8pl | bigint | bigint, bigint | func (3 rows)

При необходимости результаты запроса можно отобразить в кросс-таблице с помощью команды \crosstabview :

testdb=> SELECT first, second, first > 2 AS gt2 FROM my_table; first | second | gt2 -------+--------+----- 1 | one | f 2 | two | f 3 | three | t 4 | four | t (4 rows) testdb=> \crosstabview first second first | one | two | three | four -------+-----+-----+-------+------ 1 | f | | | 2 | | f | | 3 | | | t | 4 | | | | t (4 rows)

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

testdb=> SELECT t1.first as "A", t2.first+100 AS "B", t1.first*(t2.first+100) as "AxB", testdb(> row_number() over(order by t2.first) AS ord testdb(> FROM my_table t1 CROSS JOIN my_table t2 ORDER BY 1 DESC testdb(> \crosstabview "A" "B" "AxB" ord A | 101 | 102 | 103 | 104 ---+-----+-----+-----+----- 4 | 404 | 408 | 412 | 416 3 | 303 | 306 | 309 | 312 2 | 202 | 204 | 206 | 208 1 | 101 | 102 | 103 | 104 (4 rows)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://alkogolizm.vyvod-iz-zapoya-v-stacionare-samara11.ru/