- 📑 Шпаргалка по основным командам PostgreSQL
- Основные команды PostgreSQL в интерактивном режиме:
- Работа с PostgreSQL из командной строки:
- Примеры:
- Утилиты (программы) PosgreSQL:
- Примеры создания резервных копий:
- Список наиболее часто используемых опций:
- Восстановление таблиц из резервных копий (бэкапов):
- Работаем с PostgreSQL через командную строку в Linux
- PostgreSQL Подключение, Пользователи (Роли) и Базы Данных
- PostgreSQL создание новой роли и базы данных
- Включить удаленный PostgreSQL доступ для пользователей
- Полезные команды PostgreSQL
- Выбор shema psql в консоли:
- Sequences
- PostgreSQL Cheat Sheet for Ubuntu Linux
- Terminal commands
- Create a database
- Delete a database
- Database backup
- Show information about all clusters
- Database commands and queries
- Log in to a database
- Show database tables
- Describe a single table
- Show size of a single database
- Show all databases
- Show all tables including PostgreSQL system tables
- List all user defined data types
- Show all items of type enum
- Add a new option to an enum type
- Close all database connections
- Optimize tables
📑 Шпаргалка по основным командам PostgreSQL
Вся работа с PostgreSQL осуществляется под пользователем postgres.
Работать с PosgreSQL можно как в интерактивном режиме, так и из командной строки. Программа — psql.
Основные команды PostgreSQL в интерактивном режиме:
- \connect db_name – подключиться к базе с именем db_name
- \du – список пользователей
- \dp (или \z) – список таблиц, представлений, последовательностей, прав доступа к ним
- \di – индексы
- \ds – последовательности
- \dt – список таблиц
- \dt+ — список всех таблиц с описанием
- \dt *s* — список всех таблиц, содержащих s в имени
- \dv – представления
- \dS – системные таблицы
- \d+ – описание таблицы
- \o – пересылка результатов запроса в файл
- \l – список баз данных
- \i – читать входящие данные из файла
- \e – открывает текущее содержимое буфера запроса в редакторе (если иное не указано в окружении переменной EDITOR, то будет использоваться по умолчанию vi)
- \d “table_name” – описание таблицы
- \i запуск команды из внешнего файла, например \i /my/directory/my.sql
- \pset – команда настройки параметров форматирования
- \echo – выводит сообщение
- \set – устанавливает значение переменной среды. Без параметров выводит список текущих переменных (\unset – удаляет).
- \? – справочник psql
- \help – справочник SQL
- \q (или Ctrl+D) – выход с программы
Работа с PostgreSQL из командной строки:
- -c (или –command) – запуск команды SQL без выхода в интерактивный режим
- -f file.sql — выполнение команд из файла file.sql
- -l (или –list) – выводит список доступных баз данных
- -U (или –username) – указываем имя пользователя (например postgres)
- -W (или –password) – приглашение на ввод пароля
- -d dbname — подключение к БД dbname
- -h – имя хоста (сервера)
- -s – пошаговый режим, то есть, нужно будет подтверждать все команды
- –S – однострочный режим, то есть, переход на новую строку будет выполнять запрос (избавляет от ; в конце конструкции SQL)
- -V – версия PostgreSQL без входа в интерактивный режим
Примеры:
psql -U postgres -d dbname -c «CREATE TABLE my(some_id serial PRIMARY KEY, some_text text);» — выполнение команды в базе dbname.
psql -d dbname -H -c «SELECT * FROM my» -o my.html — вывод результата запроса в html-файл.
Утилиты (программы) PosgreSQL:
- createdb и dropdb – создание и удаление базы данных (соответственно)
- createuser и dropuser – создание и пользователя (соответственно)
- pg_ctl – программа предназначенная для решения общих задач управления (запуск, останов, настройка параметров и т.д.)
- postmaster – многопользовательский серверный модуль PostgreSQL (настройка уровней отладки, портов, каталогов данных)
- initdb – создание новых кластеров PostgreSQL
- initlocation – программа для создания каталогов для вторичного хранения баз данных
- vacuumdb – физическое и аналитическое сопровождение БД
- pg_dump – архивация и восстановление данных
- pg_dumpall – резервное копирование всего кластера PostgreSQL
- pg_restore – восстановление БД из архивов (.tar, .tar.gz)
Примеры создания резервных копий:
Создание бекапа базы mydb, в сжатом виде
pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f mydb.backup mydb
Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД
pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb
Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t *payments* -f payment_tables.backup mydb
Дамп данных только одной, конкретной таблицы. Если нужно создать резервную копию нескольких таблиц, то имена этих таблиц перечисляются с помощью ключа -t для каждой таблицы.
pg_dump -a -t table_name -f file_name database_name
Создание резервной копии с сжатием в gz
pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c > mydb.gz
Список наиболее часто используемых опций:
- -h host — хост, если не указан то используется localhost или значение из переменной окружения PGHOST.
- -p port — порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.
- -u — пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.
- -a, —data-only — дамп только данных, по-умолчанию сохраняются данные и схема.
- -b — включать в дамп большие объекты (blog’и).
- -s, —schema-only — дамп только схемы.
- -C, —create — добавляет команду для создания БД.
- -c — добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).
- -O — не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).
- -F, —format
— выходной формат дампа, custom, tar, или plain text. - -t, —table=TABLE — указываем определенную таблицу для дампа.
- -v, —verbose — вывод подробной информации.
- -D, —attribute-inserts — дамп используя команду INSERT с списком имен свойств.
Бекап всех баз данных используя команду pg_dumpall.
Восстановление таблиц из резервных копий (бэкапов):
psql — восстановление бекапов, которые хранятся в обычном текстовом файле (plain text);
pg_restore — восстановление сжатых бекапов (tar);
Восстановление всего бекапа с игнорированием ошибок
psql -h localhost -U someuser -d dbname -f mydb.sql
Восстановление всего бекапа с остановкой на первой ошибке
psql -h localhost -U someuser —set ON_ERROR_STOP=on -f mydb.sql
Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C) и восстановить
pg_restore —dbname=mydb —jobs=4 —verbose mydb.backup
Восстановление резервной копии БД, сжатой gz
gunzip mydb.gz psql -U postgres -d mydb -f mydb
Работаем с PostgreSQL через командную строку в Linux
Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:
sudo apt install postgresql-client-
sudo apt install postgresql-client-12
Для установки PostgreSQL сервера:
sudo apt install postgresql
Проверим, можем ли мы подключиться к базе данных PostgreSQL:
sudo -u postgres psql -c "SELECT version();"
Вывод команды должен быть примерно таким:
$ sudo -u postgres psql -c "SELECT version();" version ---------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit (1 row)
PostgreSQL Подключение, Пользователи (Роли) и Базы Данных
Логин в только что установленный postgreSQL сервер нужно производить под именем пользователя postgres:
Для подключения к базе данных PostgreSQL можно использовать команду:
Если такая команда не просит ввести пароль пользователя, то можно еще добавить опцию -W.
$ psql -Usrv161924_dom -hpgsql-161924.srv.hoster.ru -dsrv161924_dom -W Password for user srv161924_dom:
После ввода пароля и успешного подключения к базе данных PostgreSQL, можно посылать SQL-запросы и psql-команды.
PostgreSQL создание новой роли и базы данных
Создать новую роль c именем admin (указывайте нужное имя):
sudo su - postgres -c "createuser admin"
Создание новой базы данных:
sudo su - postgres -c "createdb testDb"
Дать права роли на базу данных:
grant all privileges on database testDb to admin;
Включить удаленный PostgreSQL доступ для пользователей
Нам нужно отредактировать файл /etc/postgresql//main/pg_hba.conf, задав опцию md5 вместо peer.
sudo vim /etc/postgresql/12/main/pg_hba.conf
После этого сделать restart PostgreSQL:
sudo service postgresql restart
Полезные команды PostgreSQL
Выйти из клиента PostgreSQL:
Показать список баз данных PostgreSQL:
Показать список пользователей (ролей):
Показать структуру таблицы:
Переименовать базу данных:
ALTER DATABASE db RENAME TO newdb;
Изменить текущую базу данных в PostgreSQL (вы не сможете переименовать или удалить текущую базу данных):
\connect db_name или более короткий alias: \c db_name
Удалить роль (пользователя):
Роль не будет удалена, если у нее есть привелегии — возникнет ошибка ERROR: role cannot be dropped because some objects depend on it .
Нужно удалить привелегии у роли, например если нужно удалить роль admin2, нужно выполнить последовательность комманд с Drop Owned:
db=# REASSIGN OWNED BY admin2 TO postgres; REASSIGN OWNED db=# DROP OWNED BY admin2; DROP OWNED db=# drop role admin2; DROP ROLE
Дать права пользователю/роли на логин ( role is not permitted to log in ):
ALTER ROLE admin2 WITH login;
Выбор shema psql в консоли:
Посмотреть список всех схем:
Подключиться к конкретной схеме:
SET search_path TO schema_name
Sequences
Получить имена всех созданных sequences:
select relname from pg_class where relkind='S';
Получить последнее значение sequence, которые будет присвоено новой вставляемой в таблицу записи:
SELECT last_value FROM order_id_seq;
PostgreSQL Cheat Sheet for Ubuntu Linux
This is a work-in-progress collection of commands, queries and information on working with PostgreSQL databases on Ubuntu Linux. The commands and queries were tested on Ubuntu 15.10 with PostgreSQL 9.4 installed.
In the example commands on this page placeholder names, such as database names, that need to be replaced with actual values are written in all caps and enclosed in underscores. Names of tools that are used to perform different tasks are in italic type.
Terminal commands
The commands in this section are executed in a terminal window such as xterm or Gnome terminal.
Create a database
sudo -u postgres createdb _DBNAME_
Delete a database
sudo -u postgres dropdb _DBNAME_
Database backup
Backing up a complete database.
sudo -u postgres pg_dump _DBNAME_ > _DBNAME_.sql
Backing up a single table of a database.
sudo -u postgres pg_dump -t _TABLENAME_ _DBNAME_ > _DBNAME_TABLENAME_.sql
Show information about all clusters
The command below shows meta and status information about all PostgreSQL clusters, including the Postgres version, owners, online/offline status and the directories, where the data and log files are stored.
Database commands and queries
Except for the login step, the commands in this section are executed in the PostgreSQL interactive terminal psql.
Log in to a database
sudo -u postgres psql _DBNAME_
Show database tables
Describe a single table
Show size of a single database
SELECT pg_database_size('_DBNAME_');
Show all databases
This following command shows a list of all databases stored on your system, including names, owners, encodings and their sizes.
Show all tables including PostgreSQL system tables
SELECT * FROM pg_catalog.pg_tables;
List all user defined data types
Show all items of type enum
Add a new option to an enum type
ALTER TYPE _MYTYPE_ ADD VALUE '_NEW_OPTION_' AFTER '_EXISTING_OPTION_';
Close all database connections
The query below closes all database connections, except your current psql session. This is useful to get rid of stale connections and when you need to perform changes, such as adding, dropping or modifying columns, tables or the whole database.
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = _DBNAME_ AND pid <> pg_backend_pid();
Optimize tables
The following commands run in succession can be used to optimize a table and potentially reduce its size significantly.
VACUUM FULL; REINDEX TABLE _TABLENAME_;
Published: April 28, 2016 by Ramiro Gómez.
If you want to be notified about new content, click here to subscribe to the newsletter or RSS feed.
Disclosure: External links on this page may contain affiliate IDs, which means that I earn a commission if you make a purchase via such a link. This allows me to operate this site and offer hopefully valuable content that is freely accessible. More information about affiliate programs.