Noțiuni de bază cu postgresql

Noțiuni de bază cu PostgreSQL

Pentru a instala PostgreSQL 9.2 în Ubuntu 12.10, executați următoarele comenzi:

sudo apt-add ppa-depozit: Pitti / postgresql
sudo apt-get update
sudo apt-get install postgresql-9.2

Să încercăm să lucreze cu baza de date prin intermediul shell:

sudo -u postgres psql

Crearea unei baze de date de testare și utilizator de test:

Postgres = # CREATE DATABASE test_database;
CREEAZĂ BAZA DE DATE

Postgres = # CREATE USER test_user cu 'qwerty' parola;
Creați un rol

Postgres = # GRANT TOATE privilegii test_database BAZA DE DATE LA test_user;
GRANT

Pentru a ieși din shell, introduceți comanda \ q.

Acum vom încerca să lucreze cu baza de date nou creată pe test_user numele:

psql -h localhost test_database test_user

Creați un tabel nou:

test_database => CREATE user_ids SECVENȚĂ;
CREATE SEQUENCE

test_database => CREATE TABLE utilizatori (

id INTEGER PRIMARY KEY DEFAULT NEXTVAL ( 'user_ids'),

);
ANUNȚ: CREATE TABLE / PRIMARY KEY va crea implicit INDEX "users_pkey" pentru "utilizatori" TABLE
CREATE TABLE

Rețineți că, spre deosebire de alte baze de date pentru PostgreSQL fără coloane AUTO_INCREMENT proprietate. In schimb secvențe (secvențe) sunt utilizate în Postgres. În momentul de față, este suficient să se știe că cu funcția NEXTVAL de ajutor putem obține un număr unic pentru secvența specificată:

test_database => SELECT NEXTVAL ( 'user_ids');
NEXTVAL
---------
1
(1 ROW)

test_database => SELECT NEXTVAL ( 'user_ids');
NEXTVAL
---------
2
(1 ROW)

Prescrierea o valoare implicită pentru masă câmp utilizatorii de valoare id NEXTVAL ( „user_ids“). am realizat același efect care dă auto_increment. Atunci când adăugarea de noi elemente, nu putem specifica id-ul în tabel, deoarece un ID unic va fi generat automat. tabele multiple pot folosi aceeași secvență. În acest fel, ne putem asigura că valorile unor câmpuri din aceste tabele nu se suprapun. În acest sens, secvențele sunt mai flexibile decât auto_increment.

Exact aceeași masă poate fi creat cu doar o singură comandă:

test_database => CREATE TABLE users2 (id PRIMARY KEY SERIAL, conectare CHAR (64), parola CHAR (64));
ANUNȚ: CREATE TABLE va crea implicit SECVENȚE "users2_id_seq" pentru coloana de serie "users2.id"
ANUNȚ: CREATE TABLE / PRIMARY KEY va crea implicit INDEX "users2_pkey" PENTRU TABELUL "users2"
CREATE TABLE

După cum puteți vedea, secvența pentru ID-ul domeniu a fost creat în mod automat.

Acum, cu comanda \ d, puteți vedea o listă cu toate mesele disponibile, și folosind \ d utilizatori - a se vedea descrierea tabelului de utilizatori. Dacă nu primiți informațiile interesant, încercați \ d + în loc de \ d. Pentru a afișa comanda de ajutor tell \ h.

Este important să rețineți că numele de tabelă implicite PostgreSQL și coloanelor sunt convertite în litere mici. Dacă acest comportament nu este de dorit, puteți folosi ghilimele duble:

test_database => CREATE TABLE "anotherTable" ( "someValue" VARCHAR (64));
CREATE TABLE

test_database => SELECT * FROM anotherTable;
EROARE: relația „anothertable“ nu există
LINE 1: SELECT * FROM anotherTable;
^

test_database => SELECT * FROM "anotherTable";
someValue
-----------
(0 ROWS)

Restul lucrării cu PostgreSQL nu este cu mult diferit de a lucra cu orice alte sisteme de management al bazelor de date relaționale:

test_database => INSERT INTO utilizatori (conectare, parola) VALORI ( 'afiskon', '123456');
INSERT 0 1

test_database => SELECT * FROM utilizatori;

Dacă acum încercați să vă conectați la Postgres de la un alt aparat, acesta va eșua:

psql -h 192.168.0.1 test_database test_user

psql: nu se poate conecta la server: Conexiune refuzată
Este serverul care rulează pe gazdă „192.168.0.1“ și acceptarea
conexiuni TCP / IP pe portul 5432?

Pentru a remedia această problemă, adăugați linia:

... în fișierul /etc/postgresql/9.2/main/postgresql.conf precum:

gazdă toate toate 192.168.0.1/16 MD5

... în fișierul /etc/postgresql/9.2/main/pg_hba.conf și spune:

sudo serviciu postgresql repornire

Acum, totul ar trebui să funcționeze.

pg_dump -c -h 192.168.0.1 -U test_user test_database> ./dump.sql

Dacă aveți o bază de date de mare, să acorde o atenție, de asemenea, la pg_dump sprijin utilitate -Fc pavilion.

Restaurarea de la o copie de rezervă:

pisică dump.sql | psql -h 192.168.0.1 test_database test_user

În timpul de rezervă, este posibil să primiți o eroare de genul:

Versiune server:: pg_dump 9.2.4; Versiune pg_dump: 9.1.9
pg_dump: avortat din cauza versiunii serverului nepotrivire

Din câte știu eu, singura soluție normală la această problemă - sincer să păstreze pretutindeni aceeași versiune de PostgreSQL.

Rețineți că configurația implicită PostgreSQL sugerează că încercați să-l rulați în cuptorul cu microunde. Înainte de a putea utiliza PostgreSQL sigur pentru a schimba pentru a combate aceste setări pentru componentele hardware și aplicația.