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

psql (PostgreSQL interactive terminal) — интерактивный терминал PostgreSQL.

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

  • pgAdmin - графический клиент для работы с PostgreSQL.
  • phpPgAdmin позволяет через браузер осуществлять администрирование сервера PostgreSQL, запускать команды SQL и просматривать содержимое таблиц и баз данных.

Все параметры соединения psql записываются следующим образом:

psql -h hostname -p 5432 -d dbname -U username -W

Полная команда запуска psql имеет следующий синтаксис:

psql [OPTION]... [DBNAME [USERNAME]]

Необязательный параметр DBNAME определяет базу данных, к которой производится исходное подключение. Необязательный параметр USERNAME определяет имя пользователя Использование и настройка PostgreSQL, применяемое для подключения. При отсутствии этих параметров используются имя пользователя операционной системы, запустившего программу, и ассоциированная с ним база данных.

В командной строке также могут задаваться дополнительные ключи. По умолчанию psql поддерживает как стандартные короткие ключи в стиле Unix (например, -с), так и длинные ключи в стиле GNU (например, –command). В некоторых системах второй вариант недоступен. В следующем перечне приведены короткие ключи Unix, всегда состоящие из одной буквы, за которыми указывается эквивалентный длинный ключ.

# psql --help
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

General options:
  -c, --command=COMMAND    run only single command (SQL or internal) and exit
  -d, --dbname=DBNAME      database name to connect to (default: "root")
  -f, --file=FILENAME      execute commands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set psql variable NAME to VALUE
  -X, --no-psqlrc          do not read startup file (~/.psqlrc)
  -1 ("one"), --single-transaction
                           execute command file as a single transaction
  --help                   show this help, then exit
  --version                output version information, then exit

Input and output options:
  -a, --echo-all           echo all input from script
  -e, --echo-queries       echo commands sent to server
  -E, --echo-hidden        display queries that internal commands generate
  -L, --log-file=FILENAME  send session log to file
  -n, --no-readline        disable enhanced command line editing (readline)
  -o, --output=FILENAME    send query results to file (or |pipe)
  -q, --quiet              run quietly (no messages, only query output)
  -s, --single-step        single-step mode (confirm each query)
  -S, --single-line        single-line mode (end of line terminates SQL command)

Output format options:
  -A, --no-align           unaligned table output mode
  -F, --field-separator=STRING
                           set field separator (default: "|")
  -H, --html               HTML table output mode
  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset command)
  -R, --record-separator=STRING
                           set record separator (default: newline)
  -t, --tuples-only        print rows only
  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)
  -x, --expanded           turn on expanded table output

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "/var/run/postgresql")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "root")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.

Report bugs to <pgsql-bugs@postgresql.org>.
  • Общие параметры(General options):
  • -c, –command=COMMAND Вместо запуска в интерактивном режиме psql выполняет всего одну команду. Команда должна иметь правильный синтаксис SQL, причем в ней не могут использоваться специфические команды psql. Например:
    psql -U postgres -d mydb --command="INSERT INTO countries (english,russian) 
    VALUES ('Ivory Coast', 'Кот-д''Ивуар');"
  • -d, –dbname=DBNAME База данных, к которой производится исходное подключение.
  • -f, –file=FILENAME Вместо запуска в интерактивном режиме psql читает код SQL из файла с заданным именем и выполняет его так, как если бы он был введен непосредственно в командной строке. После обработки файла psql завершает работу. Например:
    # sudo -u postgres psql -d mbillcz5054 -f /var/lib/pgsql/transaction.sql 
    BEGIN
    DELETE 636
    DELETE 1
    COMMIT
  • -l, –list Вывод списка баз данных, к которым может подключиться клиент:
    # psql -U postgres -l
  • -v, –set=, –variable=NAME=VALUE
  • -X, –no-psqlrc Запрет чтения и выполнения стартового файла (~/.psqlrc).
  • -1 ("one"), –single-transaction Выполняет из файла все команды, как одну транзакцию.
  • Входные и выходные параметры(Input and output options):
  • -a, –echo-all
  • -e, –echo-queries
  • -E, –echo-hidden укажет psql выводить текст SQL запроса для выполнения заданных вами команд, например для команды \du будет выведен его SQL вариант. Аналогичного эффекта можно добиться командой \set ECHOJHIDDEN клиента psql.
  • -a, –echo-all. Включение режима полного вывода эха для всех строк, полученных psql. Ключ обычно используется при написании сценариев и эквивалентен команде \set ECHO all клиента psql.
  • -e, –echo-queries. Включение режима вывода эха для запросов.
  • -A, –no-align. Клиент psql выводит результаты без выравнивания. Если ключ не задан, по умолчанию выбирается режим вывода с выравниванием.
  • -F, –field-separator=STRING. Заданный символ используется psql в качестве разделителя нолей. По умолчанию используется символ "|".
    1. h хост, - - host хост. Имя компьютера, на котором работает сервер PostgreSQL. Обычно не является обязательным при подключении к локальному серверному процессу с использованием доменных сокетов Unix. Тем не менее если процесс postmaster работает с файлом доменного сокета в каталоге, отличном от принятого по умолчанию каталога /tmp, то параметр хост с начальным символом / интерпретируется как локальный каталог, содержащий файл доменного сокета (например, при передаче параметра -h /var/pgsql клиент psql ищет файл доменного сокета в каталоге /var/pgsql).
  • -H, -html. Запуск psql в режиме вывода в формате HTML.
  • -Т атрибут, -table-attr атрибут. Атрибут HTML, включаемый в тег <tab1e> в режиме вывода HTML (например, width=100X). Чтобы передать в этом параметре несколько табличных атрибутов, заключите их в кавычки. В psql атрибуты также могут задаваться командой \pset.
  • -о файл, -output файл. Выходные данные psql направляются в заданный файл.
  • -р порт, -port порт. Порт TCP/IP (или числовой доменный сокет Unix), на котором в данный момент ведется прослушивание. Совпадает со значением переменной PGPORT (по умолчанию — 5432).
  • -Р имя=значение, - -pset имя=зпачение. Параметры форматирования выходных данных в синтаксисе команды \pset. Имена совпадают с именами параметров \pset, но значение параметра отделяется от имени не пробелом, а знаком равенства (=).
  • -q, –quiet. Режим минимального вывода, в котором не выводятся ни информационные сообщения psql, ни пояснительный текст.
  • -R разделитель, -record-separator разделитель. Заданный символ используется psql в качестве разделителя записей.
  • -s, –single-step. Пошаговый режим работы. После выполнения команды SQL пользователю предлагается продолжить или завершить работу.
  • -S, –single-line. Строчный режим работы. В этом режиме символ новой строки интерпретируется как символ точки с запятой (;), завершающий команду SQL.
  • -t, –tuples-only. Подавление вывода дополнительных данных (например, имен полей и итоговых данных). В psql эта задача решается командой \t.
  • -U пользователь, -username пользователь. Подключение к базе данных с заданным именем пользователя.
  • -v имя=значение, –variable имя=значение. Присваивание значения переменной с заданным именем (по аналогии с командой \set в psql). Значение отделяется от имени не пробелом, а знаком равенства (=).
  • -V, - -version. Вывод информации о версии.
  • -w, –no-password
  • -W, –password. Запрос пароля перед подключением к базе данных. Введенный пароль продолжает действовать в течение всего сеанса psql.
  • -x, –expanded. Расширенный режим форматирования записей. Активизируется в psql командой \х.
  • -?, - -help. Вывод краткой справки по аргументам командной строки psql.

Управляющие команды psql

В psql существуют особые команды, начинающиеся с символа \. Эти команды управляют работой psql и не передаются серверу PostgreSQL. Ниже приведены описания управляющих команд psql.

  • Вывод информации о PostgreSQL и psql.

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

postgres=# help
You are using psql, the command-line interface to PostgreSQL.
  • \copyright Команда выводит информацию об авторских правах на PostgreSQL.
  • \h или \help Общая команда получения справочной информации SQL. При вызове без аргумента выводится список всех команд, для которых имеется подробная справка. С аргументом выводится дополнительная информация по заданной теме. Если в качестве аргумента указан символ *, команда возвращает справку по синтаксису всех документированных команд SQL.
  • \? Команда выводит список управляющих команд psql, описанных ниже.
  • \g or terminate with semicolon to execute query
  • \q (или комбинация клавиш Ctrl+D) Выйти из PostgreSQL

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

  • \c[onnect] [DBNAME|- USER|- HOST|- PORT|-] Смена текущей базы данных. Аргументы команды определяют базу данных и имя пользователя, под которым производится подключение (если оно отлично от текущего имени пользователя). Если последний аргумент не задан, используется текущее имя пользователя.
postgres=# \c testdb;
  • \encoding [ENCODING] show or set client encoding
  • \password [USERNAME] securely change the password for a user
  • Команды ввода-вывода.

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

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

Команды форматирования

  • Команды форматирования

Команды \pset, \а, \С, \f, \H, \t, \T и \х управляют форматированием выходных данных. Каждая команда (за исключением \pset) управляет отдельным аспектом форматирования. Команда \pset, появившаяся позже других, позволяет управлять практически всеми параметрами. Остальные команды существуют для совместимости со старыми версиями и для удобства, но большинство из них дублирует возможности \pset.

\pset параметр [значение]

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

  • \pset format [значение]. Устанавливает формат вывода aligned, unaligned, html или latex. По умолчанию используется вывод с выравниванием (aligned), самый наглядный из всех вариантов. При сплошном выводе (unaligned) все данные выводятся в одной строке и разделяются текущим символом-разделителем. В режимах html и latex данные выводятся в виде таблиц, предназначенных для включения в документы HTML и LaTeX соответственно.
  • \pset border. Изменяет толщину рамки таблиц в зависимости от выбранного формата вывода. Например, при выводе в режиме HTML значение этого параметра отражается в атрибуте border тега <table>. Параметр принимает числовое значение. Как правило, с увеличением числа растет толщина выводимой рамки.
  • \pset expanded. Переключение между обычным и расширенным форматами вывода. Если у вас возникают проблемы с выводом данных на экран (например, если строки переносятся недопустимым образом), попробуйте изменить этот параметр. В расширенном формате psql выводит все данные в два столбца. В левом столбце приводится имя поля, а в правом — его значение.
  • \pset null. Параметр задает строку, выводимую вместо псевдозначения NULL. Обычно вместо NULL выводится пустая строка, которая определяется при помощи двух апострофов (' '). Любая другая строка заключается в апострофы. Пример:
    \pset null ' ***null*** '
  • \pset fieldsep. Параметр задает символ, используемый для разделения полей в режиме сплошного вывода (unaligned). По умолчанию используется вертикальная черта (|). При желании можно воспользоваться другим, более привычным разделителем — например, символом табуляции (U) или запятой (.). В других режимах форматирования разделитель полей игнорируется.
  • \pset recordsep. Разделитель записей в режиме сплошного вывода. По умолчанию используется символ новой строки (\п).
  • \pset tuples_only. Параметр указывает, ограничивается ли вывод одними данными (то есть результатами запроса) или же в него включаются дополнительные сведения о таблице (заголовки и комментарии).
  • \pset title. Параметр задает заголовок — строку, предшествующую всему стандартному выводу. Пустая строка задается двумя апострофами (' ').
  • \pset tab! eattr. Используется в режиме форматирования HTML для определения атрибутов тега <table> (например, width, cell padding и cell spacing). Если потребуется определить сразу несколько атрибутов, не забудьте заключить строку атрибутов в апострофы.
  • \pset pager. Параметр разрешает или запрещает использование программы постраничного вывода содержимого таблиц. Если вы хотите использовать вместо тоге другую программу постраничного вывода (например, less), перед запуском psql задайте значение переменной среды PAGER в командном интерпретаторе.
  • \а. Переключение между режимом вывода с выравниванием и сплошным выводом. Эквивалент последовательного выполнения команд \pset format al igned и \pset format unaligned.
  • \С. Заголовок запроса, выводимый перед данными итогового набора. Эквивалент команды \pset title.
  • \f. Разделитель полей, используемый в режиме сплошного вывода. Эквивалент команды \pset fieldsep.
  • \Н. Переключение между выводом в формате HTML и стандартным режимом вывода с выравниванием. Эквивалент последовательного выполнения команд \pset format HTML и \pset format aligned.
  • \t. Признак вывода дополнительной информации таблиц. Эквивалент команды \pset tuples_only.
  • \Т. Дополнительные атрибуты таблиц, вставляемые в теги <tab!e> в режиме форматирования HTML. Эквивалент команды \pset tableattr.
  • \х. Переключение режима расширенного вывода. Эквивалент команды \pset expanded.

Команды вывода информации о БД и объектах

Команды вывода информации о базе данных и различных объектах внутри нее.

Большинство этих команд снабжается префиксом \d (от слова "display"). Умение пользоваться этими командами повышает эффективность работы с базой данных.

Дополнительные опции: S = show system objects, + = additional detail)

  \d[S+]  NAME           describe table, view, sequence, or index
  \da[+]  [PATTERN]      list aggregates
  \db[+]  [PATTERN]      list tablespaces
  \dc[S]  [PATTERN]      list conversions
  \dC     [PATTERN]      list casts
  \dd[S]  [PATTERN]      show comments on objects
  \dD[S]  [PATTERN]      list domains
  \des[+] [PATTERN]      list foreign servers
  \deu[+] [PATTERN]      list user mappings
  \dew[+] [PATTERN]      list foreign-data wrappers
  \df[antw][S+] [PATRN]  list [only agg/normal/trigger/window] functions
  \dF[+]  [PATTERN]      list text search configurations
  \dFd[+] [PATTERN]      list text search dictionaries
  \dFp[+] [PATTERN]      list text search parsers
  \dFt[+] [PATTERN]      list text search templates
  \dg[+]  [PATTERN]      list roles (groups)
  \di[S+] [PATTERN]      list indexes
  \dl                    list large objects, same as \lo_list
  \dn[+]  [PATTERN]      list schemas
  \do[S]  [PATTERN]      list operators
  \dp     [PATTERN]      list table, view, and sequence access privileges
  \ds[S+] [PATTERN]      list sequences
  \dt[S+] [PATTERN]      list tables
  \dT[S+] [PATTERN]      list data types
  \du[+]  [PATTERN]      list roles (users)
  \dv[S+] [PATTERN]      list views
  \z      [PATTERN]      same as \dp
  • \d[S+] вывести все таблицы (list tables, views, and sequences)
  • \l[+] вывести все базы данных
  • \d [ имя_отношения ]. Общая команда для получения различных сведений о заданном отношении — индексе, последовательности, таблице или представлении. Команда выводит имена и типы всех полей отношения, а также специальные атрибуты или значения по умолчанию. Если имя отношения не указано, команда выводит информацию обо всех отношениях текущей базы данных.
  • \da [ агрегатная_фупкция ]. Команда выводит список агрегатных функций текущей базы данных и поддерживаемые ими типы данных. Если команда вызывается с параметром, она выводит список только тех агрегатных функций, имена которых начинаются с заданного шаблона (без учета регистра символов).
  • \dd [ имя ]. Общая команда для получения информации об объектах базы данных. Параметр может быть именем любой агрегатной или обычной функции, оператора, отношения, правила или триггера. Если имя не задано, выводится информация обо всех объектах базы данных.
  • \df [ имя_фунщии ]. Команда выводит информацию о функции, определенной в базе данных, в том числе о типах ее аргументов и возвращаемом значении. Если имя функции не задано, выводится информация обо всех функциях в базе. Как и в случае с командами \da и \dd, при вводе полного или частичного имени функции команда выводит список всех функций, имена которых начинаются с заданного шаблона (без учета регистра символов).
  • \d[istvS] [ имя ]. Общая команда вывода информации об отношениях с возможностью уточнения. Символы в квадратных скобках имеют следующий смысл:
    • i — индексы;
    • s — последовательности;
    • t — таблицы;
    • v — представления;
    • S — системные таблицы.
  • \dl. Команда выводит информацию о больших объектах текущей базы данных; эквивалент команды \1o_list.
  • \do [ имя_оператора ]. Команда выводит список всех операторов, определенных в текущей базе данных, с типами операндов и возвращаемого значения. Как и в других командах, можно задать полное или частичное имя оператора или получить информацию обо всех доступных операторах.
  • \dp [ имя_объекта ]. Команда выводит список всех объектов текущей базы данных (или объектов, имена которых хотя бы частично совпадают с заданным) вместе с информацией о правах доступа (общих, пользовательских и групповых).
  • \dT [ имя_типа ]. Команда выводит список всех доступных типов данных. Можно задать полное или частичное имя типа или получить информацию обо всех доступных типах.
  • \l[+] Команда выводит список всех баз данных на сервере с информацией о владельцах и типе расширенной кодировке.
  • \lo_list. Команда выводит список всех больших объектов текущей базы данных с комментариями.
  • \z [ имя_объекта ]. Команда выводит информацию о правах доступа; эквивалент команды \dp.

Загрузка запросов из внешних файлов

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

select * from pg_shadow;

Чтобы содержимое загружаемого файла выводилось в psql, присвойте переменной ECHO значение all (команда \set ECHO all), по умолчанию содержиое файла 1.sql не показывается.

  • Пример. Загрузка файла в текущий буфер psql
    postgres-# \set ECHO all
    postgres-# | \i /home/darkfire/1.sql
    select * from pg_shadow;
     usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl |               passwd                | valuntil | useconfig 
    ----------+----------+-------------+----------+-----------+---------+-------------------------------------+----------+-----------
     postgres |       10 | t           | t        | t         | t       |                                     |          | 
     www7777 |    16385 | f           | f        | f         | f       | md5689015ab7b2aeffa35245598db8994fc |          | 
    (2 rows)

Библиотеки readline и history

Клиент psql обладает некоторыми возможностями режима командной строки, поддерживаемыми интерпретатором bash: автоматическим завершением команд, обратным поиском и историей команд (файл /home/пользователь/psql_history). Все эти возможности доступны благодаря поддержке библиотеки readline, обеспечивающей эти функции bash.

Если конфигурационный сценарий находит в системе библиотеку readline, то поддержка обратного поиска, завершения и истории команд устанавливается автоматически при компиляции PostgreSQL. Если после компиляции выяснится, что в psql эти возможности отсутствуют, это может объясняться тем, что библиотечные и/или заголовочные файлы находились в нестандартном каталоге.

Работа с переменными

Клиент psql также позволяет работать с переменными. Команда \set создает и модифицирует переменные, а команда \unset удаляет их. Переменные psql работают так же, как переменные среды в командных интерпретаторах Unix и Linux (например, bash). Хотя в целом переменные psql реализованы довольно просто, они приносят несомненную пользу, поскольку значения переменных легко подставляются в управляющие команды psql и в команды SQL.

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

Новое значение переменной задается командой \set, за которой указываются имя и значение, разделенные пробелами. Команда либо изменяет значение существующей переменной, либо создает новую переменную, если переменная с указанным именем не существует. Имя переменной имеет произвольную длину и содержит произвольную комбинацию букв, цифр и символов подчеркивания, а значение переменной может быть строкой любой длины.

  • Присваивание значения переменной.
    testdb=# \set myvariable 'There are many like it. but this one is mine.'

    Если теперь ввести команду \set без аргументов, переменная появляется в общем списке.

    testdb-# \set
    VERSION = 'PostgreSQL 7.1.3 on i586-pc-linux-gnu. compiled by GCC 2.96'
    DBNAME = 'testdb1
    USER = 'postgres'
    PORT = '5432'
    ENCODING = 'SQL_ASCII'
    PROMPT1 = '%/№%# '
    PROMPT2 = '*/та# '
    PROMPTS = '» '
    HISTSIZE = '500'
    myvariable = 'There are many like it. but this one is mine.'

После определения переменной ее можно включать как во внутренние управляющие команды psql, так и в команды SQL. Подстановка значения переменной вместо ее имени называется интерполяцией. Механизм интерполяции открывает много полезных возможностей — например, можно загрузить файл в переменную, а затем использовать загруженное содержимое в команде INSERT или SELECT. Возможны и более простые подстановки.

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

  • Интерполяция в командах SQL
    testdb=# \set manager_id 150
    testdb=# INSERT INTO employees VALUES (
    testdb(# 'Kevin', testdb(# 'Murphy',
    testdb(# :manager_id
    testdb(# ):
    testdb=# SELECT * FROM employees WHERE id = :manager_id;
    firstname I lastname I id
    Kevin | Murphy | 150
    (1 row)

Как упоминалось выше, в переменную можно загрузить содержимое файла, а затем интерполировать ее в другую команду. Для этого присвойте переменной результат выполнения команды cat (команда Unix, предназначенная для вывода содержимого файла), заключенный в обратные апострофы (' '). В листингах 6.5 и 6.6 в качестве примера используется файл tab! edata, находящийся в домашнем каталоге пользователя (~/).

  • Чтение данных из файла в переменную
    testdb=# \set data 'cat tabledata'
    testdb=# \echo :data
    'Mike'. 'Nelson'. 151
  • Интерполяция переменной в команде INSERT
    testdb=# INSERT INTO employees VALUES (-.data):

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

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