Настройка командной строки PostgreSQL c помощью psqlrc в Ubuntu 14.04

При помощи файла psqlrc пользователь может влиять на поведение psql, интерактивного клиента командной строки. psql позволяет строить запросы в интерактивном режиме, выполнять их в PostgreSQL, а также просматривать результаты запроса. Файл psqlrc поставляется в трех вариантах:

  1. общесистемный файл psqlrc находится в каталоге конфигураций PostgreSQL. Расположение данного файла зависит от установки PostgreSQL; при необходимости его можно найти при помощи инструмента pg_config:

pg_config --sysconfdir

  1. пользовательский файл psqlrc можно найти (или создать, если его не существует) в домашнем каталоге пользователя:

touch ~/.psqlrc

  1. при наличии нескольких установок PostgreSQL можно создать файл psqlrc для конкретной версии. Просто укажите в названии файла номер нужной версии:

touch ~/.psqlrc-9.1
touch ~/.psqlrc-9.3

Установка PostgreSQL

Для начала установите систему управления базами данных (СУБД) PostgreSQL.

sudo apt-get install -y postgresql postgresql-contrib

Эта команда установит PostgreSQL 9.3. Перейдите в учетную запись пользователя postgres и запустите psql.

su - postgres
psql

При этом появится стандартная строка psql.

psql (9.3.4)
Type "help" for help.
postgres=#

Настройка строки psql

Чтобы настроить главную строку psql (PROMPT1) и создать удобные сокращенные команды, нужно отредактировать пользовательский файл psqlrc. При помощи любого удобного текстового редактора (в данном руководстве используется vim) отредактируйте файл .psqlrc и добавьте в него следующие строки:

vi ~/.psqlrc
\set PROMPT1 '%M:%> %n@%/%R%#%x '

  • %M задает имя хоста сервера БД (при соединении через сокет домена Unix это local);
  • %> задает прослушивающий порт;
  • %n указывает имя пользователя сессии;
  • %/ относится к текущей базе данных;
  • %R задает режимы (однострочный, или single-line – ^; отключен, или disconnected – !, как правило используется символ =);
  • %# задает пользователя (суперпользователь – #, обычный пользователь – >);
  • %x относится к статусу транзакции – (как правило, не заполняется).

Итак, если на машине host1 пользователь user1 обращается к базе данных data1 как обычный пользователь, строка будет иметь такой вид:

[host1]:5432 user1@data1=>

Также можно настроить вторичную строку psql (PROMPT2).

postgres-#

Вторичная строка используется, если в системе остался незавершенный запрос.

postgres=# select * from
postgres-# peel limit 1;

Настройка вторичной строки psql практически не отличается от настройки главной строки.

\set PROMPT2 '%M %n@%/%R %# '

  • где %R представлен символом – вместо =.

Если в середине транзакции на машине с именем хоста host1 пользователь user1 обратится к базе данных data1 в качестве обычного пользователя, строка будет выглядеть так:

[host1]:5432 user1@data1=>
select * from
[host1] user1@data1-> peel limit 1;

Конечно же, можно добавлять, удалять или изменять эти параметры, чтобы охватить необходимую информацию.

Цвета командной строки

Чтобы отредактировать цвет командной строки, обратитесь к psqlrc. Например, чтобы выделять номер порта красным, добавьте следующее:

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

Данная командная строка позволяет использовать различные цвета. Замените значение 31 в данной команде, чтобы выбрать:

  • Зеленый – 32;
  • Желтый – 33;
  • Синий – 34;
  • Пурпурный – 35;
  • Голубой – 36;
  • Белый – 37.

Параметры дисплея

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

\pset null '[null]'

Чтобы активировать функцию дополнения ключевых слов SQL (такие как SELECT и FROM) в верхнем или нижнем регистре, установите опцию COMP_KEYWORD_CASE с опциями upper или lower, например:

\set COMP_KEYWORD_CASE upper

Чтобы все запросы отображали время запросов, активируйте опцию timing:

Как и в bash, в командной строке psql можно нажать клавишу со стрелкой вверх, чтобы получить доступ к ранее выполненным командам – истории. Чтобы задать размер истории (то есть количество выполненных команд, которое нужно сохранять), отредактируйте HISTSIZE:

\set HISTSIZE 2000

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

\x auto

При помощи опций default, verbose и terse можно задать подробность вывода (verbosity) для отчетов об ошибках.

\set VERBOSITY verbose

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

\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

Чтобы отображать сообщения при запуске строки psql, используйте команду echo.

\echo 'Welcome to PostgreSQL\n'

Кроме того, после редактирования файла psqlrc при запуске строки psql появятся некоторые выходные данные. Чтобы предотвратить это, установите флаг QUIET в начале и конце файла.

Заключение

В итоге файл имеет следующий вид:

\set QUIET 1
\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '
\set PROMPT2 '%M %n@%/%R %# '
\pset null '[null]'
\set COMP_KEYWORD_CASE upper
\timing
\set HISTSIZE 2000
\x auto
\set VERBOSITY verbose
\set QUIET 0
\echo 'Welcome to PostgreSQL! \n'
\echo 'Type :version to see the PostgreSQL version. \n'
\echo 'Type :extensions to see the available extensions. \n'
\echo 'Type \\q to exit. \n'
\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

Теперь запустите строку psql; обратите внимание – командная строка имеет другой вид.

$ psql
Welcome to PostgreSQL!
Type :version to see the version.
Type :extensions to see the available extensions.
Type \q to exit.
psql (9.3.4)
Type "help" for help.
[local]:5432 postgres@postgres=#

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

Tags: , , , , ,

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