среда, 24 декабря 2008 г.

Краткий справочник по psql (текстовый интерфейс PostgreSQL)


В PostgreSQL есть немало интерфейсов. Из графических лично я предпочитаю pgadmin3 (он должен быть в репозитариях большинства Linux дистрибутивов). В этом справочнике будет описан текстовый - psql.
Его я нахожу даже более удобным, чем sqlplus для Oracle.

Справочник специально создавался кратким для того, чтобы описать команды, которые наиболее часто используются.
Разделим справочник на 3 части:

  1. Файлы (они же команды) PostgreSQL
  2. Команды запуска psql
  3. Команды интерактивной оболочки psql


1. Файлы (они же команды) PostgreSQL
  • psql - программа для работы с объектами PostgreSQL
  • createdb и dropdb - создание и удаление базы данных (соответственно)
  • createuser и dropuser - создание и пользователя (соответственно)
  • pg_ctl - программа предназначенная для решения общих задач управления (запуск, останов, настройка параметров и т.д.)
  • postmaster - многопользовательский серверный модуль PostgreSQL (настройка уровней отладки, портов, каталогов данных)
  • initdb - создание новых кластеровPostgreSQL (не запускайте под root !)
  • initlocation - программа для создания каталогов для вторичного хранения баз данных
  • vacuumdb - физическое и аналитическое сопровождение БД
  • pg_dump - архивация и восстановление данных
  • pg_dumpall - оболочка для pg_dump, которая работает сразу со всем кластером БДPostgreSQL
  • pg_restore - восстановление БД из архивов (.tar, .tar.gz)


2. Команды запуска psql
  • psql -c (или --command) - запуск команды без входа в интерактивный режим
  • -f (или --file) - также как и -c , но команда читается с файла
  • -l (или --list) - выводит список баз данных, к которым можно подключиться (если появляется ошибка: psql: FATAL: role "_your_userName_" does not exist ), то значит нужно указать имя пользователя явно.
  • -U (или --username) - указываем имя пользователя (например postgres)
  • -W (или --password) - приглашение на ввод пароля
  • -d - имя базы данных
  • -h - имя хоста (сервера)
  • -s - пошаговый режим, то есть, нужно будет подтверждать все команды
  • -S - одно-строчный режим, то есть, переход на новую строку будет выполнять запрос (когда надоело вводить ";" после каждой SQL команды! )
  • -V - (не строчная v) - версия PostgreSQL без входа в интерактивный режим
Примечание: Ключи можно комбинировать, например, psql -U postgres -c "select current_date"


3. Комманды интерактивной оболочки psql
(
Примечание: после этих команд точку с запятой ставить (как при выполнении SQL-запросов ) не нужно)
  • \connect db_name - подключиться к базе с именем db_name
  • \du - список пользователей
  • \dp (или \z) - список таблиц, представлений, последовательностей, прав доступа к ним
  • \di - индексы
  • \ds - последовательности
  • \dt - таблицы
  • \dv - представления
  • \dS - системные таблицы
  • \o - пересылка результатов запроса в файл (Пример: а) \o today.txt б) select select current_date ; и тогда все результаты будут записываться в today.txt. Чтобы все запросы снова выводились не в файл, а на консоль необходимо еще раз ввести \o (без указания параметров)
  • \l - список баз данных
  • \i - читать входящие данные из файла
  • \e - открывает текущее содержимое буфера запроса в редакторе (если не указана в окружении переменная EDITOR, то будет использоваться по умолчанию vi)
  • \d "table_name" - описание таблицы (вместо table_name указать свою таблицу)
  • \i запуск команды из внешнего файла, например \i /home/user/query.sql
  • \pset - команда настройки параметров форматирования
  • \echo - выводит сообщение
  • \set - устанавливает значение переменной среды. Эта команда без параметров выводит список текущих переменных (\unset - удаляет). Полезный пример: а) echo "'one','two', 'three'" > test.sql (создаем файл с данными test.sql)
  • б) \set data `cat test.sql`psql устанавливаем переменную data, которая получает результат от команды cat test.sql)
  • в) \echo :data (результат проверки переменной - 'one','two', 'three' )
  • г) select :data ; (используем переменную). Можно использовать любую SQL команду.
  • Вот так вот легко можно использовать параметры команд с внешних файлов!
  • \? - справочник psql
  • \help - справочник SQL
  • \q (или Ctrl+D) - выход с программы

Примечание: Рекомендую называть таблицы и поля строчными символами. PostgreSQL чувствителен к регистру в названиях объектов, но не к командам (select и SELECT - не имеет значения). Но если уже есть такие объекты БД, то тогда их нужно указывать в кавычках, например, SELECT * FROM "MyTable". Иначе будете удивлены почему выводится сообщение типа:
ERROR: relation "myTableName" does not exist

Успехов!

Комментариев нет: