PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
You have to
login
to post a new comment.
Шпаргалка по PostgreSQL
July 15, 2013
Начал разбираться с postgre, по этому случаю какое-то время буду вести эту шпору. Поскольку я только начинаю разбираться, некоторые из решений наверняка будут неоптимальными или неполными, такое возможно. Я наивно полагал что postgre сильно похож на mysql, но выяснилось что это в общем-то не совсем так. Буду писать о PostgreSQL версии 9.2+.
Хороший ресурс с туториалами по PostgreSQL - postgresqltutorial.com
Оф. мануал - тут
-
Смотрим с какой версией postgre имеем дело
psql --version
-
Подключаемся к выбранной БД из консоли
psql -d db_name -U user_name
-
Переключиться на выбранную бд в текущем сеансе (curent_db=# - приглашение консоли PostgreSQL, db_name - бд, на которую переключаемся)
curent_db=# \c db_name
-
Показать все таблицы в текущей бд (аналог show tables в mysql)
curent_db=# \dt
-
Показать структуру выбранной таблицы (аналог desc table_name в mysql)
curent_db=# \d+ table_name
-
Показать список доступных бд (аналог show databases в mysql)
curent_db=# \l
-
Посмотреть запрос воспроизводящий структуру таблицы (аналог show create table в mysql). Как я понял (либо не нашел пока) аналога в postgre нет. Но все же вынуть такой запрос можно, правда уже другой утилитой. По сути это будет полный дамп структуры выбранной таблицы.
pg_dump -b db_name -U user_name -t table_name -s
-
Создать дамп бд и восстановить бд из дампа (см. ссылку)
pg_dump db_name > dump_file.sql psql db_name < dump_file.sql # восстанавливаем из tar pg_restore -U user -h localhost -d db_name db_name.tar
-
Создаем новую БД
create database dbname encoding 'utf8';
-
Восстанавливаем бинарный дамп БД
pg_restore -c -d db_name dump_file.dump
-
Посмотреть список всех сиквенсов в бд (sequence)
\ds # или \ds+
-
Посмотреть состояние сиквенса (sequence)
\d sequence_name # или \d+ sequence_name
-
Создание, инкремент, удаление, установка нового значения сиквенса
# создание create sequence seq_name start 100; # получаем инкрементированное значение select nextval('seq_name'); # изменяем текущее значение alter sequence seq_name restart 120; # последнее инкрементированное значение (аналог LAST_INSERT_ID() в MySQL) select lastval(); # удаление сиквенса drop sequence seq_name;
-
Поле типа auto_increment (аналог MySQL) не существует. Есть пара конструкций serial и bigserial которые для пользователя облегчают задачу создания полей с аналогичной функциональностью , автоматически транслируя
CREATE TABLE table_name ( id SERIAL, user_name character varying(100) NOT NULL );
в конструкцию видаCREATE SEQUENCE table_name_id_seq; CREATE TABLE table_name ( id integer DEFAULT nextval('table_name_id_seq') NOT NULL, user_name character varying(100) NOT NULL );
-
Дампим выбранную из БД таблицу
pg_dump -U userName dbName -t table_name > dump_file.sql
-
Аналог просмотра текущей активности из MySQL
SHOW FULL PROCESSLIST;
В Postgresql выглядит такSELECT * FROM pg_stat_activity;
-
Установка пароля для пользователя после чистой установки
sudo -u postgres psql postgres postgres=# \password postgres
Хороший ресурс с туториалами по PostgreSQL - postgresqltutorial.com
Оф. мануал - тут
Comments
No comments here yet.