Интерактивная против неинтерактивные 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 команд и более.
Если вы потратили время на создание и тестирование трудного запрос или выполнение серий обновлений im‐portant, вы можете иметь историю команд по частям в отдельных файлах для прочтения позже:
\set HISTFILE ~/.psql_history- :HOST - :DBNAME
Окна не хранят историю команд, если вы работаете в среде Unix, как Cygwin.
psql Камни
В этом разделе мы рассмотрим всю полезность, которая похоронена внутри документации Psql.