Интерактивная против неинтерактивные PSQL

Переменные среды

Как и у других инструментов командной строки упакованных с PostgreSQL, вы можете отказаться указав хост, порт, и пользователь, установив PGHOST, PGPORT и PGUSER среда Переменные, описанные в Переменные среды. Вы также можете установить пароль в PGPASSWORD или использовать файл паролей, как описано в файле паролей. PSQL с версия 9.2 принимает две новые переменные окружения:

PSQL_HISTORY

Sets the name of the psql history file that lists all commands executed in the recent

past. The default is ~/.psql_history.

PSQLRC

 

Задает местоположение и имя файла конфигурации.

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

значения или переменные установленны. Используя pgAdmin, вы можете перейти прямо в Psql с помощью интерфейса плагина (см "Доступ Psql от pgAdmin" на стр 61). Окно консоли откроется от pgAdmin с PSQL и уже подключённой к базе данных.

Интерактивная против неинтерактивные PSQL

Вы можете запустить Psql интерактивно, просто введя Psql из командной строки ОС. Ваш быстрое переключение на Psql строке подразумевает, что вы сейчас в интерактивной PSQL консоли. Начните вводить в командах. Не забудьте прекратить запрос SQL точкой с запятой. Если вы нажмете Enter без точки с запятой, PSQL будет считать, что ваше заявление продолжается.

Typing \? в то время как в Psql консоли выводит список всех доступных команд. Для удобства, мы перепечатали этот список в приложении, выделив новые дополнения в последние версии; см "Psql Интерактивные команды" на стр 199. Typing \ h с последующим командами будет наследовать соответствующие разделы документации PostgreSQL, относящиеся к команде.

Чтобы использовать Psql неинтерактивно, нужно запустить Psql в строке ОС и передать ей файл сценария.

В этом сценарии вы можете смешать неограниченное количество команд SQL и PSQL. В качестве альтернативы вы можете передать в одном или нескольких SQL запросы в двойных кавычках.

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

pgAgent (покрыты "Работа Планирование с pgAgent" на стр 73), Linux / Unix crontab, или планировщика Windows. Для ситуаций в которых многие команды должны быть запущены в последовательности или несколько раз, вам лучше создать сценарий, а затем запустить его с помощью PSQL. Синтаксис-мудрый, неинтерактивно предлагает только несколько вариантов, потому что файл сценария делает большую часть работы. Чтобы выполнить файл, используйте опцию -f:

psql -f some_script_file

Чтобы выполнить запрос SQL на лету, используйте опцию -c. Регистрация нескольких заявлений с запятой:

psql -d postgresql_book -c "DROP TABLE IF EXISTS dross; CREATE SCHEMA staging;"

Перечисления всех вариантов в разделе "Psql неинтерактивные команды" на стр 201.

Вы можете вставлять интерактивные команды внутри файлов сценариев. Предположим, вы создали сценарий в примере 3-1, и назвал его build_stage.psql:

 

Пример 3-1. Сценарий с интерактивными командами Psql

\a \t

SELECT 'CREATE TABLE

staging.count_to_50 (array_to_string(array_agg('x' || i::text ' varchar(10)));' As

create_sql

FROM generate_series(1,9) As i;

\g create_script.sql

\i create_script.sql

 

Потому что мы хотим выход нашего запроса он будет сохранен в виде исполняемого оператора, мы должны удалить заголовки с помощью \t. Мы используем \a удалить лишнюю строку (ломает), что PSQL обычно ставит в(in).

Создайте таблицу с девятью колоннами VARCHAR.

Мы используем \g опцию, чтобы заставить наш запрос для вывода в файл.

\i последовал по имени сценария выполняет сценарий. \i это интерактивная

эквивалент неинтерактивным -f.

Чтобы запустить пример 3-1, мы открываем на следующей строке ОС:

psql -f build_stage.psql -d postgresql_book

Пример 3-1 адаптация подхода мы описываем в разделе Создание N-столбца таблицы. Как отмечается в статье, вы можете выполнить это с помощью команды DO введённой в PostgreSQL 9.0.

PSQL Настройки

Если вы проводите большую часть своего дня в PSQL, рассмотрите Psql окружающую среду по вашим потребностям. PSQL читает настройки из конфигурационного файла называемого psqlrc, если они присутствуют. Когда PSQL запущен, он ищет этот файл и запускает в нем все команды.

На Linux / Unix, файл, как правило, по имени .psqlrc и должны быть размещены в вашем домашнем каталоге. В Windows файл называется psqlrc.conf и находится в папке% APPDATA

% \ PostgreSQL папка, которая, как правило находится:C:\Users\username\AppData\Roaming\postgresql. Не волнуйтесь, если вы не можете найти файл сразу после установки; Вы, как правило, должны подождать его создания. Любые настройки в файл, замещают Psql умолчанию. Чтобы найти более подробную информацию о

Файле (см Psql documentaion).

Содержимое файла psqlrc выглядит как в примере 3-2. Вы можете добавить любую команду PSQL для исполнения при запуске.

Пример 3-2. Пример файла psqlrc

\pset null 'NULL'

\encoding latin1

\set PROMPT1 '%n@%M:%>%x %/# '

\pset pager always

\timing on

\set qstats92 'SELECT usename, datname, left(query,100) || ''...'' As query

FROM pg_stat_activity WHERE state != ''idle'' ;'

Каждый набор команд должны быть на одной линии. Например, qstats92 запрос в примере 3-2 должно быть все на той же линии. Нам пришлось разбить его на несколько строк, подходило для напечатанной страницы.

Когда вы запускаете Psql сейчас, вы увидите результаты выполнения загрузочного файла:

Null display is "NULL".

Timing is on.

Pager is always used.

psql (9.3.2)

Type "help" for help.

postgres@localhost:5442 postgresql_book#

Некоторые команды работают только на Linux / Unix систем, а не на Windows, и наоборот. В любом OS, вы должны использовать Linux / Unix слэш (солидус) для пути, чтобы отличить его от косой черты, используемого для опций. Если вы хотите начать Psql обход psqlrc, используйте опцию -X.

Чтобы удалить переменную конфигурации или установить его обратно по умолчанию, выполните команду \unset затем имя переменной, как в: \unset qstat92.

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

Пользовательские подсказки

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

\set PROMPT1 '%n@%M:%>%x %/# '

Это включает в себя, вход в кабинет (% n), сервером (% M), порт (%>),

Статус сделки (% х), и базы данных (% /). Это вероятно лишнее, можно использовать так как вы считаете нужным. Полный список быстрых символов документировано в PSQL Справочное руководство.

Когда мы соединяемся с PSQL к нашей базе, наш запрос выглядит так:

postgres@localhost:5442 postgresql_book#

Если перейти к другой базе данных с \ Connect postgis_book, наши оперативные изменения:

postgres@localhost:5442 postgis_book#

Синхронизация Executions

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

При том, что включена, каждый запрос вы запустите он сообщит продолжительность в конце. Например \timing на выполнение SELECT COUNT(*) FROM pg_tables; outputs:

count

--------

(1 row)

Time: 18.650 ms

Autocommit команды

По умолчанию, AUTOCOMMIT is on, то есть любая команда SQL задает запрос, который изменяет данные немедленно. Каждая команда является его собственной сделкой и является необратимой. Если вы работаете в крупной партии нестандартной обновлений, вы можете подстраховаться. Начните с выключения AutoCommit: \set AUTOCOMMIT off. Теперь у вас есть возможность отката ваших заявлений:

UPDATEcensus.facts SETshort_name = 'This is a mistake.';

Чтобы отменить обновление, выполните:

ROLLBACK;

Для того,чтобы обновление постоянно работало

COMMIT;

Не забудьте зафиксировать изменения; в противном случае, они будут автоматически откачены, если выйти из PSQL.

Ярлыки

Вы можете использовать команду \set (набор) для создания полезных ярлыков печатания. Храните общеприменимые ярлыки в psqlrc файле. Например, если вы используете EXPLAIN ANALYZE VER BOSE каждые 10 минут, и вы устали от вводить это каждый раз, установите переменную:

\set eav 'EXPLAIN ANALYZE VERBOSE'

Теперь, когда вы хотите ввести EXPLAIN ANALYZE VERBOSE, просто наберите: eav (устраняет переменную):

:eav SELECT COUNT(*) FROM pg_tables;

Вы даже можете сохранить часто используемые запросы в виде строк в вашей psqlrc файле, как мы делали для qstats91 и qstats92. Мы оцениваем, используя нижний регистр для ярлыка, чтобы избежать конфлікт с переменными окружения Psql, которые находятся верхнем регистре.

Получение предшествующих команд

Как и во многих инструментах командной строки, вы можете использовать стрелки вверх, в psql их можно вспомнить СОМ-mands.Переменная HISTSIZE определяет количество предыдущих команд, которые вы можете вспомнить. Например, \set (установить) HISTSIZE 10 позволяет восстановить прошлые 10 команд и более.

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

\set HISTFILE ~/.psql_history- :HOST - :DBNAME

Окна не хранят историю команд, если вы работаете в среде Unix, как Cygwin.

psql Камни

В этом разделе мы рассмотрим всю полезность, которая похоронена внутри документации Psql.