PostgreSQL на Windows без установки

Описана минимальная настройка PostgreSQL на Windows без необходимости установки БД. Запускается через bat-файл. Может работать с флэшки или переносного жесткого диска.

Скачиваем бинарники для Windows

Идем на сайт PosgreSQL в раздел Download/Windows и кликаем по ссылке zip archive в абзаце для Advanced users. Выбираем нужную версию и вперед.

Файлы из архива извлекаем в желаемую директорию, например:
[code batch]D:\psql[/code]

Запуск PostgreSQL без установки

Bat-скрипт для запуска на Windows без установки:

[code batch]
@ECHO ON
@REM Set environment variables for PostgreSQL
@SET PATH=»%CD%\bin»;%PATH%
@SET PGDATA=%CD%\data
@SET PGDATABASE=postgres
@SET PGUSER=postgres
@SET PGPORT=5432
@REM Create new DB with Russian encoding only at first run
@rem %CD%\bin\initdb -U postgres -A trust -E UTF8 —locale=russian_russia
@REM Create new DB with English encoding only at first run
%CD%\bin\initdb -U postgres -A trust -E UTF8 —locale=american_usa
@%CD%\bin\pg_ctl -D %CD%/data -l logfile start
@ECHO Press Enter to stop server
@pause
@%CD%\bin\pg_ctl -D %CD%/data stop
[/code]

Скрипт кладем в корень директории, где лежит PostgreSQL, например:
[code]D:\psql\pg.bat[/code]

Обновление версии PostgreSQL

Если необходимо обновить версию PostgreSQL, то надо совершить несколько простых шагов. Скачать архив с новой версией, извлечь его в отдельную директорию и инициализировать БД. Описано выше.

Подробно перенос данных описан здесь. Если кратко, то необходимо запустить скрипт из директории bin новейшей версии:

[code batch]cd D:\psql-new\bin[/code]
[code batch]
pg_upgrade.exe —username=postgres
—old-datadir «D:\pgsql-old\data»
—new-datadir «D:\pgsql-new\data»
—old-bindir «D:\pgsql-old\bin»
—new-bindir «D:\pgsql-new\bin»
[/code]

Меняем локаль у PostgreSQL

Если не нравятся переведенные сообщения и интерфейс pgAdmin3, то необходимо установить нужную кодировку базы данных при первом запуске.

Однако в Windows установка кодировки отличной от системной является загадкой, которую придется решить. Стандартные названия кодировок система не понимает, а которые понимает не так просто найти.

Для установки кодировки «en_US.UTF-8» необходимо инициализировать бд с локалью «american_usa» командой:
[code]initdb -U postgres -A trust -E UTF8 —locale=american_usa[/code]

Для установки кодировки «ru_RU.UTF-8» необходимо инициализировать бд с локалью «russian_russia» командой:
[code]initdb -U postgres -A trust -E UTF8 —locale=russian_russia[/code]

Для других кодировок необходимо подбирать сочетания самостоятельно, используя следующие источники на MSDN:

Полезные команды

Ниже представлены SQL-запросы, которые необходимо вводить через командную строку PostgreSQL. Запускаем командой:
[code]D:\pgsql\bin\psql —username=postgres[/code]

Или через графический интерфейс pgAdmin3:
[code]D:\pgsql\bin\pgAdmin3.exe[/code]

Проверка версии:
[code sql]select version();[/code]

Текущие процессы:
[code sql]SELECT datname,pid,query FROM pg_stat_activity;[/code]

Создание базы данных:
[code sql]CREATE DATABASE test_database;[/code]

Создание и изменение пользователя:
[code sql]CREATE USER developer WITH password ‘123456’;[/code]
[code sql]ALTER USER developer WITH password ‘654321’;[/code]

Сделать суперпользователем:
[code sql]ALTER ROLE developer SUPERUSER;[/code]

Права пользователя:
[code sql]GRANT ALL privileges ON DATABASE test_database TO developer;[/code]

Импорт из дампа:
[code batch]gunzip -c test_database.sql.gz | psql test_database[/code]
[code batch]

[/code]
[code batch]psql test_database test_user < dump_file.sql[/code]

Создание таблицы:
[code sql]

[/code]

Добавление записи:
[code sql]INSERT INTO posts (title, content) VALUES (‘title’, ‘content’);[/code]

Простой запрос:
[code sql]SELECT * FROM posts;[/code]