PostgreSQL
Connecting to postgres
$ sudo su - postgres
$ psql
psql -h <database.host> -U <user> -W
Basic commands
postgres=# \q # выйти
postgres=# \l # список баз данных.
postgres=# \с dbname # подсоединение к БД dbname.
postgres=# \dt # список всех таблиц
postgres=# \d table # структура таблицы table.
postgres=# \du # список всех пользователей и их привилегий.
postgres=# \dt+ # список всех таблиц с описанием.
postgres=# \dt *s* # список всех таблиц, содержащих s в имени.
postgres=# \o FILE # сохранить результат запроса в файл FILE.
postgres=# \i FILE # выполнить команды из файла FILE.
postgres=# \a # переключение между режимами вывода: с/без выравнивания.
Create, delete database
Creating
CREATE DATABASE mydatabase
WITH
OWNER = owner
ENCODING = 'UTF8'
LC_COLLATE = 'uk_UA.UTF-8'
LC_CTYPE = 'uk_UA.UTF-8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
postgres=# create database dbname with encoding='UNICODE';
postgres=# create user dbuser with password 'dbpass';
postgres=# grant all privileges on database dbname to dbuser;
Removing
postgres=# DROP DATABASE dbname;
Очищение таблицы
postgres=# TRUNCATE TABLE tablename RESTART IDENTITY CASCADE;
Backup, Dumps
pg_dump -h <database.host> -U <user> <database> > <database>.sql
pg_dump -h 192.168.0.14 -U postgres web_core > web_core.sql
Restore dump
psql -h <database.host> -U <new_user> <new_database> < <database>.sql
psql -h 192.168.0.14 -U web web_core2 < web_core.sql
System catalog
pg_catalog
information_schema
Functions
- pg_reload_conf()
- pg_terminate_backend(pid) - terminate connection
- pg_cancel_backend(pid) - terminate current query
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE datname = current_database() AND pid <> pg_backend_pid();
Queries
SELECT version();
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
** ALTER SYSTEM RESET** configuration_parameter
** ALTER SYSTEM RESET ALL**
SELECT name, current_setting(name), source FROM pg_settings
WHERE source IN ('configuration file');
Size
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database;
SELECT tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename))
FROM pg_tables LIMIT 2;
SELECT indexrelid::regclass, pg_size_pretty(pg_relation_size(indexrelid::regclass))
FROM pg_index LIMIT 2;
- \l+
- \dtis+