Шпаргалка по 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';