Настройка переменных среды
Дисковое пространство
Дисковое пространство
PostgreSQL не очень интенсивно использует дисковые ресурсы. На фоне таких продуктов, как Oracle, запросы PostgreSQL выглядят более чем умеренно. Тем не менее PostgreSQL является системой управления базами данных, и при продолжительном использовании PostgreSQL затраты дискового пространства растут.
На среднем компьютере с системой Linux понадобится примерно 50 Мбайт на распаковку исходных текстов и еще 60 Мбайт на их компиляцию. Выполнение регрессионных тестов потребует еще 30 Мбайт. В зависимости от выбранных параметров конфигурации после установки PostgreSQL расходует от 8 до 15 Мбайт дискового пространства.
Примечание 2
Примечание 2
Помните, что по мере использования PostgreSQL затраты дискового пространства растут! Заранее позаботьтесь о наличии свободного места для хранимых данных.
Нехватка дискового пространства при установке PostgreSQL сопряжена с потенциальным риском. Прежде чем устанавливать PostgreSQL, проверьте файловую систему и убедитесь в наличии свободного места в том разделе, в котором собираетесь устанавливать систему (например, /usr/local). В GNU-системах для этой цели можно воспользоваться командой df. Пример приведен в листинге 2.4; свободное место на диске измеряется в блоках объемом 1 Кбайт.
Дополнительные пакеты
Дополнительные пакеты
Ниже перечислены некоторые дополнительные пакеты, которые также рекомендуется установить в системе.
Примечание 1
Примечание 1
В NetBSD этот пакет не нужен, поскольку в NetBSD имеется библиотека libedit, совместимая с Readline.
Установка PostgreSQL
GNU make
В GNU-системах (таких, как Linux) используется имя make, а в других системах утилита обычно известна под именем gmake. Для удобства в книге будет использоваться имя gmake.
При компиляции PostgreSQL рекомендуется использовать gmake версии 3.76.1 и выше. Номер версии gmake проверяется командой, приведенной в листинге 2.1.
Этап 1. Создание пользователя postgres
Этап 1. Создание пользователя postgres
Создайте в Unix учетную запись пользователя, которому будет принадлежать право владения и администрирования файлами баз данных PostgreSQL. Обычно этому пользователю назначается имя «postgres», но вы можете выбрать любое имя по своему усмотрению. В примерах, приведенных в книге, предполагается, что пользователь postgres обладает правами суперпользователя для PostgreSQL.
Для создания суперпользователя PostgreSQL необходимо обладать правами root. В системе Linux пользователь postgres создается командой, приведенной в листинге 2.5.
Этап 10. Создание базы данных
Этап 10. Создание базы данных
После запуска СУБД PostgreSQL можно переходить к настройке прототипа базы данных templatel. Если все базы данных, которые вы планируете создавать в будущем, будут обладать одним набором системных параметров, установите эти параметры для шаблона templatel. Например, если вы собираетесь программировать на языке PL/lgSQL, включите поддержку языка в templatel перед выполнением команды createdb. В этом случае созданная база данных унаследует атрибуты прототипа templatel, включая поддержку языка PL/pgSQL. За дополнительной информацией об установке языка PL/pgSQL в базе данных обращайтесь к главе И.
На следующем шаге создается новая база данных. В наших примерах будет использоваться простая тестовая база, использовать прототип templatel для экспериментальных целей не рекомендуется. Поскольку ни один пользователь с правом создания баз данных еще не определен, войдите в систему под именем postgres. Позднее вы научитесь создавать пользователей с правом создания баз данных, эта тема обсуждается в главе 10. Новая база данных testdb создается командой, приведенной в листинге 2.22.
Этап 2. Установка пакета исходных текстов PostgreSQL
Этап 2. Установка пакета исходных текстов PostgreSQL
После получения исходных текстов PostgreSQL скопируйте пакет во временный каталог, из которого будет производиться компиляция и настройка PostgreSQL. Распакуйте файл архива с расширением .tar.gz и переходите к установке.
Учтите, что этот каталог не будет использоваться для хранения файлов базы данных после установки, это лишь временное хранилище для настройки и компиляции исходного пакета. Если пакет PostgreSQL был загружен из Интернета, скорее всего, его не окажется в каталоге компиляции (если не сохранить его там специально). Обычно для построения программ в системах Linux/Unix используется каталог /usr/local/src. Вероятно, для обращения к этому каталогу вам понадобятся права root. По этой причине в остальных примерах этой главы, если не оговорено обратное, подразумеваются права root.
ВНИМАНИЕ
Если вы работаете в коммерческой поставке Linux, мы настоятельно рекомендуем проверить, не был ли пакет PostgreSQL установлен по умолчанию. В RPM-системах (например, SuSe, Mandrake и Red Hat) для этого можно воспользоваться командой rpm -qa | grep -i postgres. Если пакет PostgreSQL установлен, не исключено, что он уже устарел. В этом случае следует загрузить и установить обновленную версию PostgreSQL. В процессе установки PostgreSQL под управлением RPM некоторые сценарии и программы (такие, как postmaster и psql) иногда копируются в общедоступные каталоги. Это может стать причиной конфликтов с версиями, откомпилированными из исходных текстов, поэтому перед установкой новой версии обязательно удалите старый пакет командой rpm -e <имя_пакета>.
Чтобы распаковать исходные тексты PostgreSQL в системе Linux, сначала переместите или скопируйте с компакт-диска сжатый файл в каталог /usr/local/src (многие пользователи перемещают исходные тексты в этот каталог, чтобы отделить их от своего домашнего каталога и/или других каталогов, в которых могут храниться загруженные файлы). Когда файл окажется в нужном каталоге файловой системы, распакуйте его утилитой tar. Команды для выполнения этих операций приведены в листинге 2.6.
Этап 3. Настройка конфигурации
Этап 3. Настройка конфигурации
Перед компиляцией необходимо произвести настройку исходных текстов и задать конфигурацию в соответствии с вашим потребностями. Для этой цели используется сценарий configure.
Сценарий configure также осуществляет проверку связей, необходимых для компиляции PostgreSQL. В процессе проверки связей сценарий автоматически создает файлы, необходимые для работы gmake.
Стандартный сценарий установки запускается командой ./configure. Чтобы активизировать возможности, отключенные по умолчанию, включите соответствующий ключ в команду ./configure. Полный список всех ключей конфигурации выводится командой . /conf i gure - - hel p.
Скорее всего, используемая по умолчанию конфигурация будет отличаться от той, которая нужна вам. Для нормальной установки PostgreSQL рекомендуется задать по крайней мере следующие ключи:
Если после компиляции PostgreSQL выяснится, что вы забыли включить нужный режим, вернитесь к этому этапу, измените конфигурацию и продолжите процесс построения и установки PostgreSQL. Если возврат происходит перед завершением установки, обязательно выполните команду gmake clean в каталоге верхнего уровня иерархии исходных текстов (обычно /usr/local/src/postgresql-[«epc«^]). В результате будут удалены все промежуточные объектные и частично откомпилированные файлы.
Этап 4. компиляция исходных текстов
Этап 4. компиляция исходных текстов
После выполнения команды configure переходите к компиляции PostgreSQL командой gmake. Примерный результат приведен в листинге 2.7.
Примечание 1
Примечание 1
На компьютерах с системой Linux вместо gmake может использоваться команда make. Пользователи BSD используют команду gnumake.
Этап 5. Регрессионное тестирование
Этап 5. Регрессионное тестирование
Регрессионное тестирование — не обязательный, но рекомендуемый этап. Он позволяет убедиться в том, что после компиляции исходных текстов PostgreSQL работает так, как ожидается. В процессе тестирования проверяются как стандартные операции SQL, так и расширенные возможности PostgreSQL. Регрессионные тесты помогают выявить возможные проблемы, возникающие при работе PostgreSQL
Регрессионное тестирование выполняется командой gmake check. Результат ее выполнения показан в листинге 2.8.
Этап 6. Установка откомпилированных программ и библиотек
Этап 6. Установка откомпилированных программ и библиотек
После настройки и компиляции исходного кода PostgreSQL откомпилированные библиотеки, двоичные файлы и файлы данных необходимо перенести в другой, более подходящий каталог. В случае обновления существующей версии PostgreSQL обязательно создайте резервные копии баз данных. О том, как это делается, рассказано в главе 9.
Команды установки откомпилированных файлов приведены в листинге 2.10. Команда su временно предоставляет права root для выполнения двух необходимых команд. Для выполнения обеих команд, приведенных в листинге 2.10, необходимо знать пароль пользователя root.
Примечание 1
Примечание 1
Если на этапе 3 был задан нестандартный каталог установки, укажите его вместо каталога /usr/ local/pgsql.
Этап 7. Настройка переменных среды
Этап 7. Настройка переменных среды
Использовать переменные среды PostgreSQL не обязательно. Тем не менее эти переменные задействованы при выполнении различных операций PostgreSQL, включая запуск и завершение процессов postmaster. В переменных среды задаются пути к каталогу bin и каталогу man-документации. Для этого в файл /etc/profile
решение относится к командным интерпретаторам на базе sh, включая bash и ksh):
PATH=$PATH:/usrЛocal/pgsql/bin
MANPATH=$MANPATH:/usr/1ocal/pgsql/man
export PATH MANPATH
Примечание 1
Примечание 1
Чтобы переменные среды использовались командным интерпретатором, необходимо заново войти в систему после включения соответствующих строк в файл /etc/profile.
Возможно, вам также придется сообщить системе местонахождение общих библиотек PostgreSQL (в зависимости от того, как организована работа с общими библиотеками в вашей системе). В таких системах, как Linux, FreeBSD, NetBSD, OpenBSD, Irix, HP/UX и Solaris, это обычно не требуется.
При стандартной установке поиск общих библиотек производится в каталоге /usr/local/pgsql/lib (или другом каталоге, указанном после ключа --prefix во время конфигурации). Обычно для этого переменной среды LD_LIBRARY_PATH присваивается значение /usr/local/pgsql/lib. В листинге 2.13 показано, как это делается в интерпретаторе bash, а в листинге 2.14 приведен аналогичный пример для csh и tcsh.
Этап 8. Инициализация и запуск PostgreSQL
Этап 8. Инициализация и запуск PostgreSQL
Если вы зарегистрированы как привилегированный пользователь root, то вместо выполнения команд su - с, знакомых по предыдущим этапам, вам придется войти в систему под именем postgres, созданным на первом этапе. После входа под именем postgres введите команду, приведенную в листинге 2.15.
Этап 9. Настройка сценария SysV для PostgreSQL
Этап 9. Настройка сценария SysV для PostgreSQL
Сценарий SysV позволяет корректно управлять работой PostgreSQL в системе SysV и выполнять такие операции, как запуск, остановка и проверка состояния. Он работает в большинстве версий Linux на базе Red Hat, включая Mandrake. Кроме того, после небольшой модификации он должен работать и в других системах SysV (UnixWare, Solaris и т. д.). Сценарий называется linux. Перед использованием его необходимо предварительно скопировать в каталог init.d. Возможно, для этого вам понадобятся права root.
Сначала перейдите в каталог, в котором были распакованы исходные тексты PostgreSQL (в нашем примере это /usr/local/src/postgresql-7.1.3/). Скопируйте сценарий из каталога contrib/start-scripts в каталог init.d командой (листинг 2.19).
Этапов установки PostgreSQL
10 этапов установки PostgreSQL
Дистрибутив PostgreSQL имеется на компакт-диске, прилагаемом к книге, но вы также можете посетить web-сайт PostgreSQL и проверить, не появилась ли более новая версия. Исходные тексты PostgreSQL размещены на многих ftp-сайтах. Полный список зеркальных ftp-сайтов имеется на сайте http://www.postgresql.org.
После подключения к одному из зеркальных ftp-сайтов PostgreSQL вы увидите список стабильных версий в виде каталогов, имена которых строятся по схеме vверсия (например, v7.1.3). Также на сайте может присутствовать символическая ссылка на каталог самой «свежей» стабильной версии PostgreSQL с именем latest/. В каждом каталоге находится несколько файлов пакетов. Полный пакет установки PostgreSQL называется postgresq-[версия].tar.gz, это самый большой файл в каталоге. Ниже перечислены дополнительные пакеты (суб-пакеты), которые могут устанавливаться в произвольном сочетании (обязателен только пакет base).
Компилятор С стандарта ISO/ANSI
Компилятор С стандарта ISO/ANSI
Существует множество компиляторов С, соответствующих стандарту ISO/ANSI. Для компиляции PostgreSQL рекомендуется использовать компилятор GCC (GNU С Compiler), хотя PostgreSQL также может успешно компилироваться продуктами других разработчиков. На момент написания книги наибольшее распространение получили компиляторы версий 2.95 и 2.96 (Red Hat Linux 7.x и Mandrake Linux 8.x). Если компилятор GCC не установлен в вашей системе, загрузите его с web-сайта http://gcc.gnu.org.
Номер версии GCC проверяется командой, приведенной в листинге 2.2.
Проверка версии GNU make
Листинг 2.1. Проверка версии GNU make
$ gmake --version
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for i386-redhat-linux-gnu
Copyright (C) 1988. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99, 2000
Free Software Foundation. Inc.
This is free software; see the source for copying conditions. There is NO warranty: not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Report bugs to
Команда gmake install
Листинг 2.10. Команда gmake install
S su -с "gmake install" Password:
gmake -C doc install
gmaketl]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
mkdir /usr/local/pgsql
mkdir /iusr/local/pgsql/man
mkdir /iusr/local/pgsql/doc
mkdir /iusr/local/pgsql/doc/html
$ su -c "chown -K postgres.postgres /usr/local/pgsql"
Password:
Команда su -с "gmake install" устанавливает откомпилированные файлы в каталог, заданный на этапе 3 с ключом --prefix. Если ключ не указывался, файлы устанавливаются в принятый по умолчанию каталог /usr/local/pgsq. Команда su -с "chown -К postgres.postgres /usr/1 oca! /pgsql" назначает владельцем установочного каталога PostgreSQL пользователя postgres, позволяя переключиться на права пользователя root на время выполнения команды.
Если вы хотите включить поддержку интерфейса с Perl или Python, но не обладаете правами root, необходимые интерфейсы можно включить вручную. Команды установки модулей Perl и Python приведены в листинге 2.1 1.
Ручная установка модулей Perl и Python
Листинг 2.11. Ручная установка модулей Perl и Python
$ su -с "gmake -С src/interf aces/perl 5 install"
Password:
Password:
gmake: Entering directory /usr/local/src/postgresql-7.1.3/src/interfaces/perl5'
perl Makefile. PL
Checking if you kit Is complete. . .
Looks good
Writing Makefile for PostgreSQL
gmake -f Makefile clean
[...]
$ su -c "gmake -C src/interfaces/python install"
Password:
gmake: Entering directory /usr/1ocal/src/postgresql-7.1.3/src/interfaces/python'
sed -e 's.@1ibpq_srcdir@, ../../. ./src/interfaces/libpq,g' \
-e 's,@libpq_builddir@. ../../. ./src/interfaces/libpq.g' \
-e 's£@EXTRA_LIBS(a£ -Iz -Icrypt -Iresolv -Insl -Idl -1m -Ibsd -Ireadline -Itermcap %g' \
-e ' s*@INCLUDES@*- I. ./../.. /src/includelg1 \
[...]
Также рекомендуется установить заголовочные файлы PostgreSQL. По умолчанию устанавливаются только заголовочные файлы, предназначенные для разработки клиентских приложений. Если вы собираетесь использовать расширенные возможности PostgreSQL (например, разрабатывать пользовательские функции или приложения на С, ориентированные на библиотеку libpq), вам понадобятся соответствующие заголовочные файлы. Команды установки этих файлов приведены в листинге 2.12.
Установка всех заголовочных файлов
Листинг 2.12. Установка всех заголовочных файлов
$ su -c "gmake install -all -headers"
Password:
gmake -C src install -all -headers
gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/src'
gmake -C include install-all-headers
[...]
Создание переменной среды LD_LIBRARY_PATH в bash
Листинг 2.13. Создание переменной среды LD_LIBRARY_PATH в bash
$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ export LD_LIBRARY_PATH
Создание переменной среды LD_LIBRARY_PATH в csh и tcsh
Листинг 2.14. Создание переменной среды LD_LIBRARY_PATH в csh и tcsh
$ setenv LDJ-IBRARY_PATH=/usr/local/pgsql/lib
Инициализация базы данных
Листинг 2.15. Инициализация базы данных
$ /usr/local/pgsql/bin/initdb -D /usr/1ocal/pgsql/data
Ключ -D определяет каталог, в котором будут храниться данные. То же самое можно сделать при помощи переменной среды PCDATA. Если значение переменной PCDATA задано, ключ -D не обязателен. Если вы предпочитаете хранить файлы данных в другом каталоге, убедитесь в том, что пользователь postgres обладает правом записи в этот каталог. Примерный результат инициализации initdb приведен в листинге 2.16.
Выходные данные initdb
Листинг 2.16. Выходные данные initdb
$ /usr/local/pgsql/bin/intidb -D /usr/local/pgsql/data
This database system will be initialized with username "postgres."
This user will own all the data files and must also own the server process.
Creating directory /usr/pgsql/data
Creating directory /usr/pgsqi/data/case
Creating directory /usr/pgsql/data/global
Creating directory /usr/pgsql/pg_xlog
Creating tempiatel database in /usr/local/pgsql/data/base/l
DEBUG: database system was shut down at 2001-08-24 16:36:35 PDT
DEBUG: Checkpoint record at (0. 8)
DEBUG: Redo record at (0. 8): Undo record at (0. 8): Shutdown TRUE
DEBUG: NextTransactionld: 514; NextOid: 16384
DEBUG: database system is in production state
Creating global relations in /usr/local/pgsql/data/global
DEBUG: database system was shut down at 2001-08-24 16:36:38 PDT
DEBUG: Checkpoint record at (Q. 108)
DEBUG: Redo record at (0. 108): Undo record at (0. 0);
Shutdown TRUE
DEBUG: NextTransactionld: 514: NextOid: 17199
DEBUG: database system is in production state
Initializing pg_shadow
Enabling unlimited row width for system tables.
Creating system views.
Loading pg_description.
Setting lastsysoid.
Vacuuming database.
Copying tempiatel to tempiateO.
Success. You can now start the database server using:
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/pgsql/bin/pg_ct1 -D /usr/local/pgsql/data -1 logfile start
Примечание 1
Примечание 1
Чтобы в PostgreSQL использовался другой каталог данных, укажите путь к этому каталогу с ключом -О. Каталог должен быть предварительно инициализирован командой initdb.
В конце выходных данных команды initdb приводится информация о двух вариантах запуска сервера PostgreSQL. В первом варианте процесс postmaster запускается в активном режиме. После ввода команды, приведенной в листинге 2.17, приглашение командной строки становится недоступным до тех пор, пока процесс postmaster не будет остановлен клавишами Ctrl+C.
Запуск postmaster в активном режиме
Листинг 2.17. Запуск postmaster в активном режиме
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
DEBUG: database system was shut down at 2001-10-12 23:11:00 PDT
DEBUG: Checkpoint record at (0. 1522064)
DEBUG: Redo record at (0. 1522064): Undo record at (0. 8): Shutdown TRUE
DEBUG: NextTransactionld: 615: NextOid: 18720
DEBUG: database system is in production state
Запускать PostgreSQL в активном режиме обычно не требуется. Авторы рекомендуют использовать вторую команду, которая запускает postmaster в фоновом режиме. Как показано в листинге 2.18, процесс запускается командой pg_ct1.
Запуск postmaster в фоновом режиме
Листинг 2.18. Запуск postmaster в фоновом режиме
$ /usr/1ocal/pgsqVbin/pg_ctl -D /usr/local/pgsql/data -1 /tmp/pgsql.log start
postmaster successfully started
Главное различие между этими двумя командами заключается в том, что во втором варианте postmaster запускается в фоновом режиме, а вся отладочная информация направляется в файл /tmp/pgsql.log. При нормальной работе обычно рекомендуется запускать postmaster в фоновом режиме с включенным ведением журнала.
Примечание 2
Примечание 2
Приложение pg_ctl запускает и останавливает сервер PostgreSQL За дополнительной информацией об этой команде обращайтесь к главе 9.
Копирование сценария linux
Листинг 2.19. Копирование сценария linux
$ cd /usr/local/src/postgresql-7.1.3/
$ su -с "ср contrib/start-scripts/linux /etc/re.d/init.d/postgresql"
В листинге 2.19 копии присваивается имя postgresql. Хотя имя сценария выбирается произвольно, обычно используется имя postgresql или postgres.
После копирования файл сценария необходимо сделать исполняемым. Для этого используется команда, приведенная в листинге 2.20.
Проверка версии GCC
Листинг 2.2. Проверка версии GCC
$ gcc --version
2.95.3
Назначение права исполнения для сценария SysV
Листинг 2.20. Назначение права исполнения для сценария SysV
$ su -с "chmod a+x /etc/re.d/init.d/postgresql"
Для использования сценария SysV в Red Hat ничего больше не требуется, если вы намерены ограничиться ручным запуском PostgreSQL. Но если сценарий должен автоматически запускать PostgreSQL при загрузке компьютера (или смене уровня исполнения), необходимо установить программу chkconfig. После установки программы chkconfig в начало файла /etc/rc.d/init.d/postgresql включаются следующие две строки (вместе с символом #):
# Chkconfig: 345 85 15
# description: PostgreSQL RDBMS
Приведенные в этом примере параметры будут нормально работать в вашей системе. Тем не менее полезно представлять себе смысл выполняемых действий. Первая группа цифр (345) представляет уровни исполнения, на которых запускается PostgreSQL. В нашем примере PostgreSQL запускается на уровнях 3, 4 и 5. Второе число (85) определяет приоритет запуска PostgreSQL по отношению к другим программам. Большое значение означает, что PostgreSQL запускается позже
других программ. Третье число (15) определяет относительный приоритет завершения PostgreSQL. Оно должно быть небольшим, чтобы программы завершались в порядке, обратном порядку их запуска. Как было сказано выше, сценарий должен работать с указанными параметрами, но при необходимости их можно изменить.
После того как эти две строки будут включены в сценарий, в Red Hat и Mandrake Linux для запуска PostgreSQL можно использовать команды, приведенные в листинге 2.21. Команды выполняются только с правами root.
Запуск PostgreSQL с использованием сценария SysV
Листинг 2.21. Запуск PostgreSQL с использованием сценария SysV
$ service postgresql start
Starting PostgreSQL:ok $ service postgresql stop Stopping PostgreSQL:ok
Примечание 1
Примечание 1
По умолчанию сценарий SysV направляет всю выводимую отладочную информацию PostgreSQL в файл /usr/local/pgsql/data/serverlog.
Создание базы данных
Листинг 2.22. Создание базы данных
$ createdb testdb
CREATE DATABASE
Сообщение CREATE DATABASE означает, что создание базы данных прошло успешно. Операции с созданной базой данных могут выполняться через клиента psql, предоставляющего интерфейс командной строки PostgreSQL Для этого следует ввести команду, приведенную в листинге 2.23.
Обращение к базе данных через psql
Листинг 2.23. Обращение к базе данных через psql
$ psql testdb
Теперь можно вводить команды SQL (например, SELECT) в приглашении psql. Программа psql описана в главе 4.
Чтобы убедиться в нормальной работе базы данных, попробуйте ввести команду, приведенную в листинге 2.24. Команда выводит перечень всех языков, установленных в базе данных.
Запрос к системной таблице
Листинг 2.24. Запрос к системной таблице
| testdb=# SELECT * FROM pg_language | |||||||||
| lanname | lanispl | lanpltrusted | lanplcallfoid | lancompiler | |||||
| internal | f | f | о | n/a | |||||
| С | f | f | о | /bin/cc | |||||
| sql | f | f | о | postgres | |||||
| (3 rows) |
Проверка версии gzip и tar
Листинг 2.3. Проверка версии gzip и tar
$ gzip --version
gzip 1.3
(1999-12-21)
Copyright 1999 Free Software Foundation
Copyright 1992-1993 Jean-Loup Gailly
This program cones with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
Compilation options:
DIRENT UTIME STOC_HEADERS HAVE_UNISTD_H HAVE_MEMORY_H HAVE_STRING_H
Writter by Jean-Loup Gailly.
$ tar --version
tan (GNU tar) 1.13.17
Copytight 2000 Free Software Foundation. Inc.
This program cones with NO WARRANT, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License:
see the file named COPYING for details
Written by John Gilmore and jay Fenlason.
Проверка свободного места на диске
Листинг 2.4. Проверка свободного места на диске
$ df -k
Filesystem Ik-blocks Used Available UseX Mounted on
/dev/hdal 2355984 932660 1303644 42% I
/dev/hdbl 4142800 2133160 1799192 54* /home
/dev/hda6 1541680 272540 1190828 19* /usr/local
Создание пользователя postgres
Листинг 2.5. Создание пользователя postgres
$ su - -с "useradd postgres"
ВНИМАНИЕ
Не пытайтесь использовать учетную запись root в качестве суперпользователя PostgreSQL, поскольку при этом открывается заметная брешь в системе безопасности.
Распаковка исходных текстов PostgreSQL
Листинг 2.6. Распаковка исходных текстов PostgreSQL
[root@host root]# cp postgresql-7.1.3.tar.gz /usr/local/src
[root@host root]# cd /usr/local/src
[root@host src]# tar -xzvf postgresql-7.1.3.tar.gz
postgresql-7.1.3/
postgresql-7.1.3/ChangeLogs/
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1-7.1.1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRCl-to-7.1RC2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRC2-to-7.1RC3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lRC3-to-7.Irc4
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbetal-to-7.Ibeta3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta3-to-7.Ibeta4
postgresql -7.1.3/ChangeLogs/ChangeLog-7.lbeta4-to-7.IbetaS
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta5-to-7.Ibeta6
postgresql-7.1.3/ChangeLogs/ChangeLog-7.lbeta6-7.1RC1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.Irc4-7.1
postgresql -7.1.3/ChangeLogs/ChangeLog-7.1.1-7.1.2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.2-7.1.3
postgresql-7.1.3/Copyright
[...]
[root@host root]# chown -R postgres.postgres postgresql-7.1.3
Обратите внимание на последнюю команду в листинге 2.6:
chown -R postgres.postgres postgresql-7.1.3
Команда назначает владельцем иерархии исходных текстов PostgreSQL пользователя postgres, поэтому компиляция PostgreSQL должна осуществляться пользователем postgres. Если после распаковки архива и смены владельца вы откомпилируете PostgreSQL как пользователь postgres, то этот пользователь автоматически станет владельцем всех откомпилированных файлов.
Ниже перечислены флаги утилиты tar, используемые при распаковке архива исходных текстов PostgreSQL.
После распаковки файлов войдите в систему под именем postgres и перейдите в созданный каталог (например, /usr/local/src/postgres-7.1.3). Остальные этапы установки будут выполняться в этом каталоге.
Компиляция исходных текстов при помощи утилиты GNU make
Листинг 2.7. Компиляция исходных текстов при помощи утилиты GNU make
[postgresPhost postgresql-7.1.3]# gmake
gmake -C doc all
gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
gmake[l]: Nothing to be done for all'.
gmake[l]: Leaving directory /usr/local/src/postgresql-7.1.3/doc'
gmake -C src all
gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/src'
gmake -C backend all
gmake[2]: Entering directory /usr/local/src/postgresql-7.1.3/src/backend'
gmake -C utils fmgroids.h
gmake[3]: Entering directory /usr/local/src/postgresql-7.1.3/src/backend/utils'
[...]
В зависимости от быстродействия компьютера процесс может занять 10 минут, час и даже больше. После завершения компиляции появляется следующее сообщение:
All of PostgreSQL is successfully made. Ready to install.
Регрессионное тестирование
Листинг 2.8. Регрессионное тестирование
[postgres(?host postgresql-7.1.3]f gmake check
gmake -С doc all
gmake[l]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
gmake[l]: Nothing to be done for all'.
gmake[l]: Leaving directory /usr/local/src/postgresql-7.1.3/doc'
[...]
Команда gmake check строит тестовый вариант PostgreSQL и выполняет серию тестов. После завершения каждого теста выводится результат: ok для удачных тестов и failed для неудачных. Примерный вид сообщения об ошибке приведен в листинге 2.9 (вероятно, в вашей системе количество тестов будет выше указанного).
Выходные данные регрессионных тестов
Листинг 2.9. Выходные данные регрессионных тестов
============
1 of 76 tests failed.
============
The differences that caused some tests to fail can be viewed in the file ./regression.(Jiffs'. A copy of the test summary that you see above is saved in the file ./regression.out'.
Файлы, упоминаемые в листинге 2.9 (regression.diffs и regression.out), размещаются в подкаталоге src/test/regress каталога исходных текстов. Если исходные тексты PostgreSQL размещаются в каталоге /usr/local/src, то файлы результатов регрессионных тестов будут находиться в каталоге /usr/local/src/postgresql-[версия]/src/ test/regress.
Регрессионные тесты не всегда выявляют все возможные ошибки. Проблемы иногда возникают из-за несогласованности параметров локального контекста (например, часовых поясов) или специфики оборудования (скажем, результатов операций с плавающей точкой). При разработке приложений PostgreSQL обязательно проводите собственное тестирование.
ВНИМАНИЕ
Регрессионные тесты не могут выполняться с правами root. Команда gmake check должна запускаться пользователем postgres.
Обязательные пакеты
Обязательные пакеты
Скорее всего, ваша операционная система уже содержит все (или почти все) обязательные программные пакеты. Ниже приведен полный список.
Подготовка к установке
Подготовка к установке
Установка PostgreSQL не сложна. Тем не менее успешная компиляция PostgreSQL возможна лишь при соблюдении ряда требований к программной среде. Все требования (кроме наличия исходных текстов PostgreSQL) относятся к инструментарию GNU. Если вы работаете в системе Linux, вполне возможно, что этот инструментарий уже установлен. В системах, производных от BSD (таких, как FreeBSD или MacOS X), необходимые средства загружаются из Интернета.
Если окажется, что какие-либо из перечисленных компонентов отсутствуют в системе, сначала поищите пакеты на web-сайте поставщика системы. Кроме того, инструментарий GNU можно загрузить с сайта http://www.gnu.org. Объем свободного места в файловой системе, используемой для установки, должен быть достаточным для распаковки и компиляции исходных текстов (требования изложены в подразделе «Дисковое пространство» этого раздела).
Установка PostgreSQL
Установка PostgreSQL
В этой главе описана процедура подготовки, установки и настройки PostgreSQL. По умолчанию многие возможности PostgreSQL не задействуются. Например, поддержку языка TCL приходится специально активизировать на стадии компиляции. Существует множество других возможностей, отключенных по умолчанию, поэтому мы рассмотрим различные флаги и ключи для их активизации во время компиляции PostgreSQL. Обязательно прочитайте описание перед тем, как начинать установку.
В этой главе рассматривается процедура установки PostgreSQL на платформах Linux/Unix. Хотя приведенное описание относится к Linux, инструкции подходят и для большинства современных платформ Unix.
Примечание 1
Примечание 1
PostgreSQL может работать на платформе Win32, однако установка пакета в системе Windows в книге не рассматривается. Независимая работа PostgreSQL для Win32 невозможна, пакет работает только в среде Cygwin. Несмотря на бесспорные достоинства среды Cygwin, практическое использование PostgreSQL в Cygwin не рекомендуется.
Утилиты GNU zip и tar
Утилиты GNU zip и tar
Утилита GNU zip (также называемая gzip) предназначена для сжатия и восстановления файлов. Сжатым файлам, созданным утилитой gzip, присваивается расширение .gz. Проверка наличия и версии программы gzip производится командой gzip --version.
В дополнение к gzip вам также понадобится утилита tar, предназначенная для слияния файлов и каталогов в один архив и последующей распаковки архивов в файловой системе. Архивированный файл, созданный утилитой tar, обычно снабжается расширением .tar. Файлы, сжатые утилитой gzip и архивированные утилитой tar, обычно имеют составное расширение .tar.gz. Именно так выглядят архивные
файлы из комплекта поставки PostgreSQL. Номера версий gzip и tar проверяются командой, приведенной в листинге 2.3.
Клиенты PostgreSQL
Библиотеки readline и history
Библиотеки readline и history
Клиент psql обладает некоторыми возможностями режима командной строки, поддерживаемыми интерпретатором bash: автоматическим завершением команд, обратным поиском и историей команд (файл /home/пользователь/psql_history). Все эти возможности доступны благодаря поддержке библиотеки readline, обеспечивающей эти функции bash.
Если конфигурационный сценарий находит в системе библиотеку readline, то поддержка обратного поиска, завершения и истории команд устанавливается автоматически при компиляции PostgreSQL. Если после компиляции выяснится, что в psql эти возможности отсутствуют, это может объясняться тем, что библиотечные и/или заголовочные файлы находились в нестандартном каталоге. Если вы хотите изменить конфигурацию psql и включить поддержку расширенных средств командной строки, начните с поиска заголовочных файлов (libreadline.h, readline.h и history.h).
Определив местонахождение библиотечных и заголовочных файлов в системе, сообщите эти данных сценарию PostgreSQL configure при помощи следующих ключей:
- -with-includes=Kaталог_заголовочных_файлов
- -with-11Ь$=каталог_6иблиотечных_файлов
После изменения конфигурации постройте двоичный файл psql заново. Дополнительная информация о настройке конфигурации PostgreSQL приведена в подразделе «Этап 3. Настройка конфигурации» раздела «10 этапов установки PostgreSQL» главы 2.
Дополнительные возможности клиента psql
Дополнительные возможности клиента psql
Основные сведения о клиенте psql приводились в главе 4. В этом разделе рассматриваются его нетривиальные возможности. В частности, здесь приводится полный список ключей командной строки и описания всех команд psql. Кроме того, в этом разделе рассматриваются и такие темы, как загрузка входных данных SQL из внешних файлов, работа с журналом из командной строки и динамическая подстановка переменных в команды SQL.
Графический клиент PgAccess
Графический клиент PgAccess
Программа PgAccess обеспечивает графический интерфейс для администрирования PostgreSQL. Она имеет много общего с управляющими программами таких СУБД для PC, как Microsoft Access.
Графический интерфейс позволяет просматривать и редактировать различные элементы баз данных PostgreSQL — таблицы, запросы и т. д. — в визуальном режиме. Это удобная альтернатива для интерфейса командной строки psql, который иногда бывает излишне утомительным и неудобным.
Программа PgAccess написана на сценарном языке Tcl/Tk, что упрощает ее адаптацию для других систем, поскольку программа устанавливается и работает во всех системах с поддержкой сценариев Tcl/Tk (включая Linux/Unix, Windows и MacOS). Приложение PgAccess работает на стороне клиента, причем наличие PostgreSQL на компьютере, на котором работает PgAccess, не обязательно.
Изменение приглашений
Изменение приглашений
Чтобы изменить приглашение psql, достаточно изменить значение соответствующей переменной командой \set. Символ % является префиксом стандартных переменных, перечисленных в табл. 6.2. Символ \п используется для перевода строки, остальные символы выводятся обычным образом. Команда в листинге 6.7 изменяет переменную PROMPT1 и включает в стандартное приглашение дополнительный префикс psql:.
Клиенты PostgreSQL
Клиенты PostgreSQL
В этой главе приводится дополнительная информация о клиентах PostgreSQL — приложениях, обеспечивающих пользовательский интерфейс с сервером Post-greSQL.
В настоящее время наибольшее распространение получили две программы: клиент командной строки psql и его графический аналог PgAccess. Клиент psql устанавливается по умолчанию, а для установки PgAccess следует задать ключ - -with-tcl во время компиляции исходных текстов PostgreSQL (как упоминалось в главе 2).
Команды форматирования
Команды форматирования
Команды \pset, \а, \С, \f, \H, \t, \T и \х управляют форматированием выходных данных. Каждая команда (за исключением \pset) управляет отдельным аспектом форматирования. Команда \pset, появившаяся позже других, позволяет управлять практически всеми параметрами. Остальные команды существуют для совместимости со старыми версиями и для удобства, но большинство из них дублирует возможности \pset.
- format. Устанавливает формат вывода aligned, unaligned, html или latex. По умолчанию используется вывод с выравниванием (aligned), самый наглядный из всех вариантов. При сплошном выводе (unal igned) все данные выводятся в одной строке и разделяются текущим символом-разделителем. В режимах html и latex данные выводятся в виде таблиц, предназначенных для включения в документы HTML и LaTeX соответственно.
- border. Изменяет толщину рамки таблиц в зависимости от выбранного формата вывода. Например, при выводе в режиме HTML значение этого параметра отражается в атрибуте border тега
. Параметр принимает числовое значение. Как правило, с увеличением числа растет толщина выводимой рамки.
- expanded. Переключение между обычным и расширенным форматами вывода. Если у вас возникают проблемы с выводом данных на экран (например, если строки переносятся недопустимым образом), попробуйте изменить этот параметр. В расширенном формате psql выводит все данные в два столбца. В левом столбце приводится имя поля, а в правом — его значение.
- null. Параметр задает строку, выводимую вместо псевдозначения NULL. Обычно вместо NULL выводится пустая строка, которая определяется при помощи двух апострофов (' '). Любая другая строка заключается в апострофы. Пример:
\pset null ' ***null*** '- fieldsep. Параметр задает символ, используемый для"разделения полей в режиме сплошного вывода (unaligned). По умолчанию используется вертикальная черта (|). При желании можно воспользоваться другим, более привычным разделителем — например, символом табуляции (U) или запятой (.). В других режимах форматирования разделитель полей игнорируется.
- recordsep. Разделитель записей в режиме сплошного вывода. По умолчанию используется символ новой строки (\п).
- tuples_only. Параметр указывает, ограничивается ли вывод одними данными (то есть результатами запроса) или же в него включаются дополнительные сведения о таблице (заголовки и комментарии).
- title. Параметр задает заголовок — строку, предшествующую всему стандартному выводу. Пустая строка задается двумя апострофами (' ').
- tab! eattr. Используется в режиме форматирования HTML для определения атрибутов тега
(например, width, cell padding и cell spacing). Если потребуется определить сразу несколько атрибутов, не забудьте заключить строку атрибутов в апострофы.
- pager. Параметр разрешает или запрещает использование программы постраничного вывода содержимого таблиц. Если вы хотите использовать вместо тоге другую программу постраничного вывода (например, less), перед запуском psql задайте значение переменной среды PAGER в командном интерпретаторе.
- \а. Переключение между режимом вывода с выравниванием и сплошным выводом. Эквивалент последовательного выполнения команд \pset format al igned и \pset format unaligned.
- \С. Заголовок запроса, выводимый перед данными итогового набора. Эквивалент команды \pset title.
- \f. Разделитель полей, используемый в режиме сплошного вывода. Эквивалент команды \pset fieldsep.
- \Н. Переключение между выводом в формате HTML и стандартным режимом вывода с выравниванием. Эквивалент последовательного выполнения команд \pset format HTML и \pset format aligned.
- \t. Признак вывода дополнительной информации таблиц. Эквивалент команды \pset tuples_only.
- \Т. Дополнительные атрибуты таблиц, вставляемые в теги
в режиме форматирования HTML. Эквивалент команды \pset tableattr.
- \х. Переключение режима расширенного вывода. Эквивалент команды \pset expanded.
Команды ввода-вывода
Команды ввода-вывода
Команды ввода-вывода psql предназначены для импортирования и экспортирования данных, а также для настройки параметров пересылки данных.
- \copy таблица { FROM | ТО }файл \ stdin | stdout. Команда позволяет скопировать данные, полученные от клиентского приложения (с правами пользователя, запустившего клиента), вместо копирования данных с сервера командой SQL COPY. Поддерживаются все стандартные элементы команды COPY. За дополнительной информацией о синтаксисе обращайтесь к описанию команды COPY (см. главу 14). Следует помнить о принципиальных различиях между командами \copy и COPY:
- Данные, скопированные командой \copy, сначала передаются через клиентское приложение. При этом скорость копирования оказывается несколько ниже, чем при непосредственном копировании из серверного процесса.
- Доступ к файлам локальной файловой системы предоставляется с правами учетной записи текущего пользователя. Таким образом, клиент может иметь расширенный (или наоборот, ограниченный) доступ к файлам по сравнению с серверным процессом.
- Обозначения stdin и stdout (стандартный ввод и вывод) интерпретируются по-разному: в psql они относятся ко входному и выходному потокам. В контексте серверного процесса stdin представляет источник данных команды COPY, a stdout представляет выходной поток запроса.
- \echo строка. Заданная строка передается в стандартный вывод. Команда часто используется при написании сценариев, поскольку с ее помощью можно включить в вывод сценария данные, не предоставляемые СУБД (например, комментарии).
- \д [ файл ]. Команда выполнения буфера. Как и символ точки с запятой (:) в конце команды SQL, передает текущее содержимое буфера запроса серверу для обработки. Аргумент позволяет сохранить итоговый набор в заданном файле или передать его следующей программе для дальнейшей обработки.
- \i файл. Чтение входных данных из файла с заданным именем. Содержимое файла интерпретируется так, словно оно было введено непосредственно в приглашении psql.
- \1o_export old файл. Экспортирование больших объектов с заданным идентификатором объекта (OID) в локальную файловую систему. Отличается от функции сервера 1o_export() так же, как команда \copy в psql отличается от команды COPY в SQL.
- \lo_import файл [ комментарий ]. Импортирование больших объектов из локальной файловой системы в базу данных. К объекту можно присоединить необязательный комментарий; это рекомендуется делать, поскольку в противном случае на него можно будет ссылаться только по значению OID, которое придется запоминать для дальнейшего использования. Если присоединить к объекту комментарий, то команда \lo_list выведет комментарий вместе со значением OID объекта, что упростит его поиск после импортирования.
- \о [ файл \ /команда ]. Перенаправление вывода (например, результатов выборки) в файл или его передача системной команде для дальнейшей обработки. Если аргумент не задан, перенаправление прекращается и происходит восстановление стандартного вывода. Особого внимания заслуживает возможность конвейерной (pipe) передачи вывода системным командам (например, дгер), что позволяет проводить поиск по шаблонам в выходных данных запросов и управляющих команд psql.
- \р. Вывод текущего содержимого буфера psql. Если с момента выполнения последней команды новые данные не поступали, отображается последняя выполненная команда.
- \qecho строка. Заданная строка направляется в канал вывода, заданный командой \о (вместо stdout). Команда обычно используется для включения дополнительной информации в выходной поток psql.
- \w файл \ /команда. Текущий буфер запроса направляется в заданный файл или передается системной команде для дальнейшей обработки.
- \d [ имя_отношения ]. Общая команда для получения различных сведений о заданном отношении — индексе, последовательности, таблице или представлении. Команда выводит имена и типы всех полей отношения, а также специальные атрибуты или значения по умолчанию. Если имя отношения не указано, команда выводит информацию обо всех отношениях текущей базы данных.
- \da [ агрегатная_фупкция ]. Команда выводит список агрегатных функций текущей базы данных и поддерживаемые ими типы данных. Если команда вызывается с параметром, она выводит список только тех агрегатных функций, имена которых начинаются с заданного шаблона (без учета регистра символов).
- \dd [ имя ]. Общая команда для получения информации об объектах базы данных. Параметр может быть именем любой агрегатной или обычной функции, оператора, отношения, правила или триггера. Если имя не задано, выводится информация обо всех объектах базы данных.
- \df [ имя_фунщии ]. Команда выводит информацию о функции, определенной в базе данных, в том числе о типах ее аргументов и возвращаемом значении. Если имя функции не задано, выводится информация обо всех функциях в базе. Как и в случае с командами \da и \dd, при вводе полного или частичного имени функции команда выводит список всех функций, имена которых начинаются с заданного шаблона (без учета регистра символов).
- \d[istvS] [ имя ]. Общая команда вывода информации об отношениях с возможностью уточнения. Символы в квадратных скобках имеют следующий смысл:
Команды вывода информации
Команды вывода информации
Клиент psql поддерживает несколько команд, предназначенных для получения информации о базе данных и различных объектах внутри нее. Большинство команд снабжается префиксом \d (от слова «display»). Умение пользоваться этими командами повышает эффективность работы с базой данных.
- i — индексы;
- s — последовательности;
- t — таблицы;
- v — представления;
- S — системные таблицы.
- \dl. Команда выводит информацию о больших объектах текущей базы данных; эквивалент команды \1o_list.
- \do [ имя_оператора ]. Команда выводит список всех операторов, определенных в текущей базе данных, с типами операндов и возвращаемого значения. Как и в других командах, можно задать полное или частичное имя оператора или получить информацию обо всех доступных операторах.
- \dp [ имя_объекта ]. Команда выводит список всех объектов текущей базы данных (или объектов, имена которых хотя бы частично совпадают с заданным) вместе с информацией о правах доступа (общих, пользовательских и групповых).
- \dT [ имя_типа ]. Команда выводит список всех доступных типов данных. Можно задать полное или частичное имя типа или получить информацию обо всех доступных типах.
- \1. Команда выводит список всех баз данных на сервере с информацией о владельцах и типе расширенной кодировке. Команда \1 + также выводит комментарии (процедура создания комментариев описана в подразделе «Документирование базы данных» раздела «Сопровождение базы данных» главы 9).
- \lo_list. Команда выводит список всех больших объектов текущей базы данных с комментариями.
- \z [ имя_объекта ]. Команда выводит информацию о правах доступа; эквивалент команды \dp.
- -а, -echo- al I. Включение режима полного вывода эха для всех строк, полученных psql. Ключ обычно используется при написании сценариев и эквивалентен команде \set ECHO all клиента psql.
- -A, -no-al ign. Клиент psql выводит результаты без выравнивания. Если ключ не задан, по умолчанию выбирается режим вывода с выравниванием.
- -с команда, --command команда. Вместо запуска в интерактивном режиме psql выполняет всего одну команду. Команда должна иметь правильный синтаксис SQL, причем в ней не могут использоваться специфические команды psql.
- -d база_данных, --dbname база_данных. База данных, к которой производится исходное подключение.
- -е, - -echo-queries. Включение режима вывода эха для запросов.
- -Е, - -echo-hidden. Включение режима вывода скрытых запросов, сгенерированных командами psql. Аналогичного эффекта можно добиться командой \set ECHOJHIDDEN клиента psql.
- - f файл, - - f i 1 е файл. Вместо запуска в интерактивном режиме psql читает код SQL из файла с заданным именем и выполняет его так, как если бы он был введен непосредственно в командной строке. После обработки файла psql завершает работу.
- -F разделитель, -field- separator разделитель. Заданный символ используется psql в качестве разделителя нолей.
- - h хост, - - host хост. Имя компьютера, на котором работает сервер PostgreSQL. Обычно не является обязательным при подключении к локальному серверному процессу с использованием доменных сокетов Unix. Тем не менее если процесс postmaster работает с файлом доменного сокета в каталоге, отличном от принятого по умолчанию каталога /tmp, то параметр хост с начальным символом / интерпретируется как локальный каталог, содержащий файл доменного сокета (например, при передаче параметра -h /var/pgsql клиент psql ищет файл доменного сокета в каталоге /var/pgsql).
- -H, -html. Запуск psql в режиме вывода в формате HTML.
- -1, - -11 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-1 ine. Строчный режим работы. В этом режиме символ новой строки интерпретируется как символ точки с запятой (;), завершающий команду SQL.
- -1, - - tupl es - on! у. Подавление вывода дополнительных данных (например, имен полей и итоговых данных). В psql эта задача решается командой \t.
- -Т атрибут, -table-attr атрибут. Атрибут HTML, включаемый в тег
в режиме вывода HTML (например, width=100X). Чтобы передать в этом параметре несколько табличных атрибутов, заключите их в кавычки. В psql атрибуты также могут задаваться командой \pset. - -U пользователь, -username пользователь. Подключение к базе данных с заданным именем пользователя.
- -v имя=значение, --variable имя=значение. Присваивание значения переменной с заданным именем (по аналогии с командой \set в psql). Значение отделяется от имени не пробелом, а знаком равенства (=).
- -V, - -version. Вывод информации о версии.
- -W. -password. Запрос пароля перед подключением к базе данных. Введенный пароль продолжает действовать в течение всего сеанса psql.
- -х, -expanded. Расширенный режим форматирования записей. Активизируется в psql командой \х.
- -X, - -no-psqlrc. Запрет чтения и выполнения стартового файла (~/.psqlrc).
- -?, - -help. Вывод краткой справки по аргументам командной строки psql.
- \connect [ база_данных [ пользователь ] ]. Подключение к другой базе данных. Аргументы команды определяют базу данных и имя пользователя, под которым производится подключение (если оно отлично от текущего имени пользователя). Если последний аргумент не задан, используется текущее имя пользователя.
- \edit [ файл ]. Запуск внешнего редактора, в котором загружается либо заданный файл, либо (при отсутствии аргумента) текущее содержимое буфера запроса. После завершения редактирования новое содержимое пересылается в буфер запроса или, если оно завершено символом точки с запятой (:), немедленно выполняется. При редактировании файла psql определяет, какой редактор следует запустить, просмотром следующих переменных среды (в указанном порядке): PSQL_EDITOR, EDITOR и VISUAL. Если ни одна из этих переменных не определена, psql пытается запустить команду /bin/vi.
- \q. Завершение работы с программой. В большинстве терминальных приложений для выхода также используется комбинация клавиш Ctrl+D.
- \set [ переменная [ значение ] ]. Присваивание значений переменным среды. При вызове без аргументов команда выводит список всех текущих значений переменных среды, а при вызове с аргументами заданной переменной присваивается новое значение. При передаче нескольких значений переменной присваивается результат их конкатенации.
- \unset переменная. Сброс, то есть удаление из памяти, переменных среды. Результат отличается от присваивания пустой строки, поскольку в этом случае переменная продолжает существовать в памяти.
- \! [ команда ]. Выполнение внешних команд. При вызове без аргументов запускается сеанс командного интерпретатора, который временно замещает приглашение psql (до завершения сеанса). При вызове с аргументами заданная команда выполняется в psql, а результаты выводятся в stdout.
- Table name. Имя создаваемой таблицы.
- Inherits. Таблица (или таблицы), от которых создаваемая таблица наследует атрибуты. Значения выбираются в раскрывающемся списке. Помните, что выбор не ограничивается одной таблицей; вы можете нажать кнопку со стрелкой и выбрать другую таблицу, имя которой также появляется в поле Inherits.
- Check. Выражения, которые должны проверяться при выполнении команд INSERT и UPDATE.
- Constraint. Ограничения, устанавливаемые для таблицы.
- \?. Команда выводит список управляющих команд, описанных в данной главе.
- \copyright. Команда выводит информацию об авторских правах на PostgreSQL.
- \encoding. Если включена поддержка расширенных кодировок, команда позволяет задать кодировку для клиента. Если аргумент не задан, на экране выводится текущая кодировка.
- \help. Общая команда получения справочной информации. При вызове без аргумента выводится список всех команд, для которых имеется подробная справка. С аргументом выводится дополнительная информация по заданной теме. Если в качестве аргумента указан символ *, команда возвращает справку по синтаксису всех документированных команд SQL.
- Базы данных
- Разработка баз данных
- СУБД и базы данных
- Управление базами данных
- Классика баз данных
- Софт для создания базы данных
- SQL
- Access
- FoxProо
- Расширенная оптимизация подзапросов в Oracle
- Informix
- Линтер
- Postgres
- СУБД DB2
- InterBase
- Excel
- Таблицы Excel
- Справка Excel
- Программирование в Excel
- Деньги в Excel
- Задачи Excel
Загрузка файла в текущий буфер
Листинг 6.1. Загрузка файла в текущий буфер
testdb=# \set ECHO all
testdb=| \i /usr/local/pgsql/query
SELECT * FROM employees WHERE firstname='Andrew';
firstname I lastname I Id
Andrew | Brookins | 100
(1 row)
Возможно, при частом выполнении этой операции удобнее воспользоваться командой \edit.
Присваивание значения переменной
Листинг 6.2. Присваивание значения переменной
testdb=# \set myvariable 'There are many like it. but this one is mine.'
Если теперь ввести команду \set без аргументов, переменная появляется в общем списке.
Список переменных
Листинг 6.3. Список переменных
testdb-# \set
VERSION = 'PostgreSQL 7.1.3 on i586-pc-linux-gnu. compiled by GCC 2.96'
DBNAME = 'testdb1
USER = 'postgres'
PORT = '5432'
ENCODING = 'SQL_ASCII'
PROMPT1 = '%/№%# '
PROMPT2 = '*/та# '
PROMPTS = '» '
HISTSIZE = '500'
myvariable = 'There are many like it. but this one is mine.'
После определения переменной ее можно включать как во внутренние управляющие команды psql, так и в команды SQL. Подстановка значения переменной вместо ее имени называется интерполяцией. Механизм интерполяции открывает много полезных возможностей — например, можно загрузить файл в переменную, а затем использовать загруженное содержимое в команде INSERT или SELECT. Возможны и более простые подстановки.
Чтобы подставить значение переменной, укажите перед ее именем префикс :. В листинге 6.4 приведен пример интерполяции в командах INSERT и SELECT.
Интерполяция в командах SQL
Листинг 6.4. Интерполяция в командах SQL
testdb=# \set manager_id 150
testdb=# INSERT INTO employees VALUES (
testdb(# 'Kevin', testdb(# 'Murphy',
testdb(# :manager_id
testdb(# ):
testdb=# SELECT * FROM employees WHERE id = :manager_id;
firstname I lastname I id
Kevin | Murphy | 150
(1 row)
Как упоминалось выше, в переменную можно загрузить содержимое файла, а затем интерполировать ее в другую команду. Для этого присвойте переменной результат выполнения команды cat (команда Unix, предназначенная для вывода содержимого файла), заключенный в обратные апострофы (' '). В листингах 6.5 и 6.6 в качестве примера используется файл tab! edata, находящийся в домашнем каталоге пользователя (~/).
Чтение данных из файла в переменную
Листинг 6.5. Чтение данных из файла в переменную
testdb=# \set data 'cat tabledata'
testdb=# \echo :data
'Mike'. 'Nelson'. 151
Интерполяция переменной в команде INSERT
Листинг 6.6. Интерполяция переменной в команде INSERT
testdb=# INSERT INTO employees VALUES (-.data):
После листинга 6.6 в таблице empl oyees появляется новая запись со значениями полей, загруженными из переменной data.
Настройка приглашений
Листинг 6.7. Настройка приглашений
testdb=# Nset PROMPT1 'psql:%/%R%#'
psql:testdb=#
Создание приглашения с именем хоста, портом и именем пользователя
Листинг 6.8. Создание приглашения с именем хоста, портом и именем пользователя
testdb=# \set PROMPT1 '[*m:*>
:*n;]«/)= '
[host:5432:postgres](testdb)=
Создание приглашения с текущей датой, именем базы данных и именем пользователя
Листинг 6.9. Создание приглашения с текущей датой, именем базы данных и именем пользователя
testdb=# \set PROMPT1 '\
[Fri Aug 3 21:44:30 POT 2001]
postgres:testdb=#
Модификация запроса
Модификация запроса
Чтобы изменить существующий запрос, перейдите на вкладку Queries, выберите запрос в списке и щелкните на кнопке Design. На экране появляется окно Query Builder, в котором отображается имя запроса, сгенерированная команда SQL, а также все комментарии, введенные при исходном конструировании. Вы можете отредактировать код SQL вручную или воспользоваться визуальным конструктором. Кнопка Save query definition позволяет сохранить изменения в существующем запросе.
Настройка приглашения psql
Настройка приглашения psql
Клиент psql допускает полную настройку внешнего вида своего приглашения. Например, это позволяет выводить различную полезную информацию наиболее простым и наглядным способом (что может быть нагляднее приглашения, в котором вводятся данные?) В psql данные приглашения хранятся в переменных PROMPT1, PROMPT2 и PROMPTS. В разных ситуациях программа отображает разные варианты приглашения.
Переменная PROMPT1 содержит стандартное приглашение, используемое по умолчанию. Переменная PROMPT2 содержит приглашение, выводимое в новой строке незавершенной команды или запроса (то есть запрос не был завершен символом ; и для него не выполнялась команда \д). Приглашение, хранящееся в переменной PROMPTS, отображается при вводе данных во время выполнения команды SQL COPY. Чтобы узнать текущую настройку приглашений, введите команду \set без аргументов — на экране появляется список текущих переменных. Найдите в нем переменные PROMPT1, PROMPT2 и PROMPTS. Их значения, заключенные в апострофы, определяют внешний вид приглашений psql. Символы с префиксом % (например, %т) являются переменными; остальные символы выводятся в точности так, как показано.
В табл. 6.1 приведены значения по умолчанию для всех трех переменных. Обратите внимание, во второй строке (в примере для PROMPT2) предполагается, что в незавершенном запросе имеется открывающая круглая скобка, вследствие чего знаку # предшествует символ (.
Операции с группами
Операции с группами
В PgAccess версии 0.98.7, последней на момент выхода книги, управление группами не поддерживалось. Операции создания и модификации групп пользователей PostgreSQL следует выполнять в интерфейсе командной строки клиента psql.
Операции с пользователями
Операции с пользователями
PgAccess позволяет выполнять административные операции с учетными записями пользователей базы данных в графическом режиме. В PgAccess, как и в клиентах командной строки, при выполнении этих операций используются команды CREATE USER и ALTER USER, но PgAccess обеспечивает графический интерфейс к этим командам.
Щелчок на вкладке Users открывает список всех зарегистрированных пользователей базы данных. Из трех основных кнопок программы на вкладке Users используются только кнопки New и Design.
Кнопка New создает нового пользователя базы данных. Как нетрудно заметить, все основные элементы окна соответствуют параметрам команды SQL CREATE USER. В поле Username вводится имя нового пользователя, а поля Password и Verify Password предназначены для ввода пароля (если он есть). Флажки позволяют предоставить новому пользователю права CREATEDB и CREATEUSER (как говорилось выше, при наличии этих прав пользователь наделяется правами суперпользователя базы данных). В поле Valid until вводится срок действия учетной записи пользователя (по аналогии с командой CREATE USER).
Кнопка Design позволяет изменить атрибуты выделенной записи пользователя так, как это обычно делается командой SQL ALTER USER. Элементы этого окна также соответствуют различным вариантам команды ALTER USER и позволяют сменить имя пользователя или пароль, предоставить права CREATEDB и CREATEUSER (см. выше) или изменить срок действия учетной записи.
Параметры командной строки
Параметры командной строки
Полная команда запуска psql имеет следующий синтаксис:
psql[ ключи ] [ бдЗд_дднных [ пользователь ] ]
Необязательный параметр база_дсптых определяет базу данных, к которой производится исходное подключение. Необязательный параметр пользователь определяет имя пользователя PostgreSQL, применяемое для подключения. При отсутствии этих параметров используются имя пользователя операционной системы, запустившего программу, и ассоциированная с ним база данных.
В командной строке также могут задаваться дополнительные ключи. По умолчанию psql поддерживает как стандартные короткие ключи в стиле Unix (например, -с), так и длинные ключи в стиле GNU (например, --command). В некоторых системах второй вариант недоступен. В следующем перечне приведены короткие ключи Unix, всегда состоящие из одной буквы, за которыми указывается эквивалентный длинный ключ.
ВНИМАНИЕ
В версии 7.0 код, запрашивающий пароль у пользователя, если серверный процесс требует аутентификации при подключении к базе, работает нестабильно, что иногда приводит к ошибке и отказу в подключении. Если вы знаете, что подключение должно сопровождаться аутентификацией, задайте ключ принудительного запроса пароля -W (--password).
Примеры приглашений
Примеры приглашений
Комбинируя разные переменные в команде \set, можно придать приглашению любую желаемую форму. Пример создания нового приглашения для переменной PROMPT1 приведен в листингах 6.8 и 6.9.
Работа с переменными
Работа с переменными
Клиент psql также позволяет работать с переменными. Команда \set создает и модифицирует переменные, а команда \unset удаляет их. Переменные psql работают так же, как переменные среды в командных интерпретаторах Unix и Linux (например, bash). Хотя в целом переменные psql реализованы довольно просто, они приносят несомненную пользу, поскольку значения переменных легко подставляются в управляющие команды psql и в команды SQL.
Примечание 1
Примечание 1
При работе с переменными следует помнить, что в psql существует несколько внутренних переменных. Присваивание этим переменным произвольных значений может иметь непредсказуемые и нежелательные последствия для работы программы. Список этих переменных и их возможное применение рассматриваются в приложении D.
Новое значение переменной задается командой \set, за которой указываются имя и значение, разделенные пробелами. Команда либо изменяет значение существующей переменной, либо создает новую переменную, если переменная с указанным именем не существует. Имя переменной имеет произвольную длину и содержит произвольную комбинацию букв, цифр и символов подчеркивания, а значение переменной может быть строкой любой длины. Пример приведен в листинге 6.2.
Работа с запросами
Работа с запросами
Как нетрудно предположить, в PgAccess предусмотрены средства конструирования, редактирования и выполнения запросов. Щелкните на вкладке Queries — вы увидите список существующих запросов, определенных в базе данных. Пользователям Microsoft Access эта часть интерфейса программы покажется знакомой — визуальный конструктор запросов PostgreSQL очень похож на аналогичное средство Access.
Новый запрос создается щелчком на кнопке New, при этом на экране открывается окно Query Builder. Прежде чем переходить к конструированию запроса, введите его имя в поле Query name. Имя выбирается произвольно и никак не влияет на работу запроса. Оно нужно только для того, чтобы запрос отличался от других запросов в списке. На этой стадии также можно ввести комментарии к запросу.
Ручное построение запроса
Ручное построение запроса
После ввода имени можно либо ввести текст запроса вручную, либо воспользоваться визуальным конструктором для ускорения процесса. Если вы предпочитаете первый вариант, введите команду SELECT, которая будет использоваться для выборки данных, в большом многострочном поле под элементом Query name. При желании команду можно разбить на несколько строк.
Системные команды
Системные команды
Следующая группа команд относится к общесистемным функциям psql — подключению к другой базе данных, вызову внешнего редактора, присваиванию значений переменным psql и завершению работы с клиентом.
Создание баз данных
Создание баз данных
Чтобы создать базу данных в PgAccess, перейдите на вкладку Database в верхней части экрана, затем щелкните на кнопке New и введите имя новой базы. Результат будет точно таким же, как при выполнении команды SQL CREATE DATABASE текущим пользователем. Чтобы использовать другой шаблон вместо templatel или выбрать тип кодировки, следует либо воспользоваться программой createdb, либо ввести команду CREATE DATABASE в клиенте командной строки (см. главу 9).
Создание функций
Создание функций
Чтобы создать в PgAccess новую функцию, перейдите на вкладку Functions и щелкните на кнопке New. В открывшемся окне вводится имя новой функции, список параметров (разделенный запятыми), язык, на котором написана функция (SQL, С, plpgsql и т.д.) и тип возвращаемого значения. Тело функции вводится в многострочном поле, занимающем большую часть экрана (или в отдельном файле, если это функция С). Завершив ввод, щелкните на кнопке Save.
Примечание 1
Примечание 1
Вы можете просматривать определения существующих функций. Для этого следует выбрать нужную функцию в списке и щелкнуть на кнопке Open.
Мы вернемся к теме создания функций в следующей главе.
Создание таблиц
Создание таблиц
Графический интерфейс PgAccess позволяет относительно просто создавать таблицы и изменять их структуру.
Перейдите на вкладку Tables и щелкните на кнопке New. На экране появится диалоговое окно Create new table. Различные поля и кнопки этого окна предназначены для изменения атрибутов создаваемой таблицы. В целом эти элементы являются визуальными аналогами параметров команды SQL CREATE.
Ниже перечислены основные поля диалогового окна Create new table.
Ниже рассказано, как происходит включение в таблицу новых полей, а также вставка и удаление записей.
Настройка приглашений по умолчанию
Таблица 6.1. Настройка приглашений по умолчанию
Приглашение Переменная Пример PROMPT1 '8/SW1 testcBHf PROMPT2 %1%Ш ' testdb(f PROMPTS ' » ' »
Стандартные переменные в приглашениях
Таблица 6.2. Стандартные переменные в приглашениях
Обозначение Описание %~ Имя текущей базы данных. Если используется база данных по умолчанию, в приглашении выводится тильда (~) и Знак #, если текущий пользователь зарегистрирован в качестве суперпользователя базы данных. В противном случае выводится знак > %> Номер порта, на котором сервер базы данных принимает подключения %/ Имя текущей базы данных %т Имя сервера, на котором работает PostgreSQL, усеченное до первой точки (например, «yourserver.com» в приглашении превращается в «yourserver») IM Полное имя сервера, на котором работает PostgreSQL. Если информация недоступна, в приглашении выводится строка «localhost» %п Текущее имя пользователя базы данных %R В приглашении PROMPT1 обычно выводится знак равенства (=); в строчном режиме выводится знак л; при разрыве связи с сервером выводится восклицательный знак (!). В приглашении PROMPT2 вместо знака равенства обычно выводится дефис (-), а в начале новой строки в незавершенной команде выводится соответствующий символ (например, если в многострочном запросе осталась открытая круглая скобка, то переменная Ж включит круглую скобку в приглашение). В приглашении PROMPT3 не выводится ничего % ЧИСЛО Символ, заданный в виде десятичного, восьмеричного или шестнадцатеричного кода. Восьмеричные коды имеют префикс 0; шестнадцатеричные коды имеют префикс Ох; остальные числа интерпретируются как десятичные % : переменная Значение переменной в psql задается с префиксом : % 'команда В приглашение вставляются выходные данные заданной команды
Удаление данных
Удаление данных
Чтобы удалить данные из таблицы, откройте ее точно так же, как для вставки: перейдите на вкладку Tables, щелкните на имени таблицы и затем — на кнопке Open. На экране появляется «сетка», заполненная данными. Удалять можно как целые записи, так и отдельные поля в записях. Чтобы удалить запись, щелкните в соответствующей строке и нажмите клавишу Delete. PgAccess выводит диалоговое окно с предложением подтвердить удаление (на случай, если клавиша была нажата случайно). Чтобы полностью или частично удалить содержимое поля, щелкните в соответствующей ячейке (или перейдите к ней нажатием клавиши Tab) и удалите лишние символы нажатием клавиши Backspace.
Управляющие команды psql
Управляющие команды psql
Как упоминалось в главе 2, в psql существуют особые команды, начинающиеся с символа \. Эти команды управляют работой psql и не передаются серверу PostgreSQL. Ниже приведены описания управляющих команд psql.
Установка и базовая настройка
Установка и базовая настройка
Подготовить PgAccess для работы с PostgreSQL относительно просто. Самое главное, чтобы в системе был установлен и правильно настроен пакет Tcl/Tk.
Поддержка Tel в PostgreSQL включается при помощи ключа -with-tcl на стадии компиляции. Ключ - -with-tcl производит автоматическую настройку библиотек Tel для PostgreSQL и устанавливает двоичный файл pgaccess.
Примечание 1
Примечание 1
Без поддержки Tcl/Tk в PostgreSQL программа PgAccess работать не будет. В поставках Linux, включающих PostgreSQL (таких, как Red Hat и Mandrake), двоичные файлы PostgreSQL откомпилированы с поддержкой Tel.
Если ключ --with-tcl не был установлен во время исходной компиляции, вы можете включить поддержку Tel в существующую конфигурацию PostgreSQL без повторной инициализации каталогов данных. Для этого следует переконфигурировать PostgreSQL с ключом -with-tcl и произвести повторную компиляцию.
После завершения переконфигурирования очистите каталог командой gmake clean и перекомпилируйте программу командой gmake. Завершите процесс postmaster и введите команду gmake i nstal 1. Команда устанавливает новые двоичные файлы и библиотеки в новой конфигурации PostgreSQL. После того как файлы установлены, остается лишь перезапустить PostgreSQL.
ВНИМАНИЕ
Повторная компиляция PostgreSQL после установки осуществляется только с использованием исходных текстов той версии, которая была установлена ранее. Использование другой версии может привести к потере данных. Перед внесением любых изменений в установку PostgreSQL, как обычно, рекомендуется создать резервную копию данных.
Визуальное конструирование запроса
Визуальное конструирование запроса
Чтобы создать запрос в визуальном конструкторе, щелкните на кнопке Visual Designer. Как упоминалось выше, по своему интерфейсу этот инструмент напоминает конструктор запросов Microsoft Access. Изначально область конструирования запроса пуста. Чтобы разместить в ней новую таблицу, введите имя таблицы в поле раскрывающегося списка Add table, где по умолчанию размещается курсор. Также можно раскрыть список существующих таблиц и выбрать таблицу там.
После того как в запрос включены все нужные таблицы, переходите к формированию связей между ними. Для этого следует перетащить мышью поле одной из таблиц на поле другой таблицы. Установленные связи отображаются в виде тонких линий, соединяющих таблицы. При перетаскивании объектов таблиц связи будут автоматически перемещаться в соответствии с заданным расположением.
Чтобы удалить таблицу из области конструирования запроса, щелкните на ее имени и нажмите клавишу Delete. Удаление связей выполняется аналогично — выделением связи и нажатием клавиши Delete.
Все связи между таблицами преобразуются в секции WHERE, определяющей условия логического объединения двух таблиц. Связи представляют условия, основанные на операторе =. Чтобы задать другое условие, отредактируйте команду SQL в окне Query Builder. Учтите, что при возвращении в режим визуального конструирования и последующем сохранении все модификации связей вернутся к условию равенства.
Чтобы выбрать поля, входящие в итоговый набор запроса, перетащите их в область результата (разделенная на ячейки область в нижней части экрана). В поле Criteria можно ввести условия, применяемые к результатам запроса. Чтобы просмотреть команду SQL, сгенерированную по итогам визуального конструирования, щелкните на кнопке Show SQL. Кнопка Execute SQL позволяет выполнить созданный запрос (с целью тестирования). Завершив построение запроса, щелкните на кнопке Save to query builder. Запрос сохраняется в таблице pga_queries.
Включение новых полей в таблицу
Включение новых полей в таблицу
Чтобы включить в таблицу новое поле, введите его атрибуты в полях field name, type, size и Default value; установите в нужное положение флажки field cannot be null и primary key. Завершив настройку атрибутов, щелкните на кнопке Add field, чтобы включить поле в список. Кнопки Move Up и Move Down позволяют перемещать поле в списке, кнопка Delete field удаляет поле, а кнопка Delete All удаляет все поля.
Когда все будет готово к включению поля в базу данных, щелкните на кнопке Create.
Вставка и обновление записей
Вставка и обновление записей
Клиент PgAccess также может использоваться для занесения данных в таблицы; более того, это довольно просто и удобно. Перейдите на вкладку Table и просмотрите список таблиц. Щелкните на той таблице, с которой вы хотите работать, затем — на кнопке Open.
На экране появляется «сетка», столбцы которой соответствуют полям таблицы. Перейдите к нужной ячейке нажатием клавиши Tab или просто щелкните на ней мышью. Запись выделяется цветом, и в ней появляется курсор, показывающий позицию ввода новых данных. База данных обновляется лишь после того, как вы перейдете к следующей ячейке нажатием клавиши Tab; также можно щелкнуть в другой ячейке кнопкой мыши. После одного из этих действий PgAcccess выводит сообщение «Updating database...».
Обратите внимание: PgAccess позволяет сортировать и фильтровать данные в таблицах при помощи полей Sort field и Filter conditions, расположенных в верхней части окна. Чтобы отсортировать таблицу по одному полю, введите его имя в поле Sort field с необязательным ключевым словом ASC (сортировка по возрастанию) или DESC (сортировка по убыванию). Также возможна сортировка по нескольким полям, для этого имена полей перечисляются через запятую. Например, сортировка поля lastname по возрастанию выполняется следующим образом: lastname ASC
Критерии фильтрации записей состоят из условных конструкций следующего вида:
(аде < 45) and (avgsalary > 40000)
Обновление происходит практически так же, но вместо добавления новых записей редактируются существующие данные.
Выполнение запроса
Выполнение запроса
Чтобы просмотреть результаты выполнения запроса, перейдите на вкладку Queries, выберите нужный запрос в списке и щелкните на кнопке Open. На экране появляется окно, напоминающее окно редактирования таблицы, но доступное только для чтения. Поле Sort используется для сортировки записей по результатам выражения, а в поле Filter conditions вводится выражение для фильтрации записей.
Вывод информации о PostgreSQL и psql
Вывод информации о PostgreSQL и psql
В psql существует небольшая группа команд, предназначенных для вывода информации о PostgreSQL и самом клиенте psql. Они используются прежде всего для получения справочной информации о других командах.
Загрузка запросов из внешних файлов
Загрузка запросов из внешних файлов
Кроме непосредственного ввода запросов в приглашении, в psql предусмотрена возможность создания запросов и команд в файлах с последующей загрузкой их содержимого в текущий буфер. Данная возможность часто используется на практике.
Создайте файл с текстом запроса и запустите psql. Загрузка файлов в буфер запроса производится командой VI. В листинге 6.1 приведен пример загрузки простой команды SELECT из файла в буфер. В данном случае текст запроса отображается на экране, но в вашей системе по умолчанию этого может и не происходить. Чтобы содержимое загружаемого файла выводилось в psql, присвойте переменной ECHO значение all (команда \set ECHO all).
Базы данных: Разработка - Управление - Excel