Когато става въпрос за администриране на бази данни на Postgres, има голямо разнообразие от инструменти на трети страни, като например SQL Workbench/J или pgAdmin III. Самият Postgres обаче идва в комплект с мощен инструмент за команден ред, наречен psql
което е чудесно за тези, които са запознати с терминала или търсят задачи за администриране на скриптове. Една от най-често срещаните задачи, които администраторът на базата данни изпълнява, е просто да се запознае със средата. Това включва задаване на въпроси като „Кои бази данни се намират на този сървър?“ или „Какви таблици се съхраняват в конкретна база данни на този сървър?“. В този урок ще научим как да отговорим на тези ключови въпроси от командния ред с помощта на psql
.
Мета-команди
В допълнение към възможността да изпращате необработени SQL заявки към сървъра чрез psql
можете също да се възползвате от psql
мета-команди за получаване на информация от сървъра. Мета-командите са команди, които се оценяват от psql
и често се превежда в SQL, който се издава срещу системните таблици на сървъра, спестявайки време на администраторите при изпълнение на рутинни задачи. Те са обозначени с обратна наклонена черта и след това последвани от командата и нейните аргументи. Ще видим някои примери за това по-долу.
Списък на бази данни
Един процес на Postgres сървър може да управлява множество бази данни едновременно. Всяка база данни се съхранява като отделен набор от файлове в собствена директория в директорията с данни на сървъра. За да видите всички дефинирани бази данни на сървъра, можете да използвате \list
мета-команда или нейния пряк път \l
.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sales | ubuntu | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Превключване на бази данни
Повечето сървъри на Postgres имат три бази данни, дефинирани по подразбиране:template0
, template1
и postgres
. template0
и template1
са скелетни бази данни, които са или могат да бъдат използвани от CREATE DATABASE
команда. postgres
е базата данни по подразбиране, към която ще се свържете, преди да създадете други бази данни. След като създадете друга база данни, ще искате да преминете към нея, за да създадете таблици и да вмъкнете данни. Често, когато работите със сървъри, които управляват множество бази данни, ще откриете нуждата да прескачате често между бази данни. Това може да стане с \connect
мета-команда или нейния пряк път \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Таблици с листинги
След като се свържете с база данни, ще искате да проверите кои таблици са създадени там. Това може да стане с \dt
мета-команда. Ако обаче няма таблици, няма да получите изход.
sales=# \dt
No relations found.
sales=#
След създаване на таблица, тя ще бъде върната в табличен списък с създадени таблици.
sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+--------
public | leads | table | ubuntu
(1 row)
sales=#