Шпаргалка по PostgreSQL

Основное

Инициализация БД

postgresql-setup initdb

или:

sudo su - postgres -c "initdb -E UTF8 -D '/var/lib/pgsql/data'"

Поддержка русского:

В файл /var/lib/pgsql/data/postgresql.conf добавляем:

client_encoding = UTF8

Доступ по паролю:

vi /var/lib/pgsql/data/pg_hba.conf

должно быть так (host .. md5):

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Подключиться в консоли:

sudo -u postgres psql

Создать пользователя и БД(с поддержкой русского):

CREATE USER jira WITH password 'jira123';
CREATE DATABASE jira5db WITH OWNER jira ENCODING 'UTF8' TEMPLATE = template0;
GRANT ALL privileges ON DATABASE jira5db TO jira;

Посмотреть список баз данных:

\l

Подключиться к БД:

\connect database_name

Список таблиц:

\dt *

Описание таблиц

\d *

Удалить БД:

DROP DATABASE jira5db;

Дамп БД:

pg_dump -c -h 192.168.0.1 -U test_user test_database > ./dump.sql

Залить дамп:

cat dump.sql | psql -h 192.168.0.1 test_database test_user

Если при создании БД выдается ошибка createdb: database creation failed: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)

Все БД создаются из темплейтов, в данном случае у нас просто нет темплейта для UTF8 — переделаем существующий template1 на UTF8:

UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

Добавить комментарий