Дополнительные возможности клиента psql
В этой главе приводится дополнительная информация о клиентах PostgreSQL – приложениях, обеспечивающих пользовательский интерфейс с сервером PostgreSQL.
В настоящее время наибольшее распространение получили две программы: клиент командной строки psql и его графический аналог PgAccess. Клиент psql устанавливается по умолчанию, а для установки PgAccess следует задать ключ --withtcl во время компиляции исходных текстов PostgreSQL (как упоминалось в главе 2).
Основные сведения о клиенте psql приводились в главе 4. В этом разделе рассматриваются его нетривиальные возможности. В частности, здесь приводится полный список ключей командной строки и описания всех команд psql. Кроме того, в этом разделе рассматриваются и такие темы, как загрузка входных данных SQL из внешних файлов, работа с журналом из командной строки и динамическая подстановка переменных в команды SQL.
Параметры командной строки
Полная команда запуска psql имеет следующий синтаксис:
psql[ ключи ] [ база_данных [ пользователь ] ]
Необязательный параметр база_данных определяет базу данных, к которой производится исходное подключение. Необязательный параметр пользователь определяет имя пользователя PostgreSQL, применяемое для подключения. При отсутствии этих параметров используются имя пользователя операционной системы, запустившего программу, и ассоциированная с ним база данных.
В командной строке также могут задаваться дополнительные ключи. По умолчанию psql поддерживает как стандартные короткие ключи в стиле Unix (например, – с), так и длинные ключи в стиле GNU (например, --command). В некоторых системах второй вариант недоступен. В следующем перечне приведены короткие ключи Unix, всегда состоящие из одной буквы, за которыми указывается эквивалентный длинный ключ.
- – а, – echo – alI. Включение режима полного вывода эха для всех строк, полученных psql. Ключ обычно используется при написании сценариев и эквивалентен команде \set ECHO all клиента psql.
- – A, – no-align. Клиент psql выводит результаты без выравнивания. Если ключ не задан, по умолчанию выбирается режим вывода с выравниванием.
- – с команда, --command команда. Вместо запуска в интерактивном режиме psql выполняет всего одну команду. Команда должна иметь правильный синтаксис SQL, причем в ней не могут использоваться специфические команды psql.
- – d база_данных, --dbname база_данных. База данных, к которой производится исходное подключение.
- – е, --echo-queries. Включение режима вывода эха для запросов.
- – Е, --echo-hidden. Включение режима вывода скрытых запросов, сгенерированных командами psql. Аналогичного эффекта можно добиться командой \set ECHOJHIDDEN клиента psql.
- – f файл, --filе файл. Вместо запуска в интерактивном режиме psql читает код SQL из файла с заданным именем и выполняет его так, как если бы он был введен непосредственно в командной строке. После обработки файла psql завершает работу.
- – F разделитель, – field-separator разделитель. Заданный символ используется psql в качестве разделителя нолей.
- – h хост, --host хост. Имя компьютера, на котором работает сервер PostgreSQL. Обычно не является обязательным при подключении к локальному серверному процессу с использованием доменных сокетов Unix. Тем не менее если процесс postmaster работает с файлом доменного сокета в каталоге, отличном от принятого по умолчанию каталога /tmp, то параметр хост с начальным символом / интерпретируется как локальный каталог, содержащий файл доменного сокета (например, при передаче параметра – h /var/pgsql клиент psql ищет файл доменного сокета в каталоге /var/pgsql).
- – H, – html. Запуск psql в режиме вывода в формате HTML.
- – I, --II st. Вывод списка баз данных, к которым может подключиться клиент.
- – о файл, – 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.
- – 1, --tuples – onlу. Подавление вывода дополнительных данных (например, имен полей и итоговых данных). В psql эта задача решается командой \t.
- – Т атрибут, – table-attr атрибут. Атрибут HTML, включаемый в тег <table> в режиме вывода HTML (например, width=100X). Чтобы передать в этом параметре несколько табличных атрибутов, заключите их в кавычки. В psql атрибуты также могут задаваться командой \pset.
- – U пользователь, – username пользователь. Подключение к базе данных с заданным именем пользователя.
- – v имя=значение, --variable имя=значение. Присваивание значения переменной с заданным именем (по аналогии с командой \set в psql). Значение отделяется от имени не пробелом, а знаком равенства (=).
- – V, --version. Вывод информации о версии.
- – W. – password. Запрос пароля перед подключением к базе данных. Введенный пароль продолжает действовать в течение всего сеанса psql.
- – х, – expanded. Расширенный режим форматирования записей. Активизируется в psql командой \х.
- – X, --no-psqlrc. Запрет чтения и выполнения стартового файла (~/.psqlrc).
- – ? , --help. Вывод краткой справки по аргументам командной строки psql.
Внимание
В версии 7.0 код, запрашивающий пароль у пользователя, если серверный процесс требует аутентификации при подключении к базе, работает нестабильно, что иногда приводит к ошибке и отказу в подключении. Если вы знаете, что подключение должно сопровождаться аутентификацией, задайте ключ принудительного запроса пароля – W (--password).