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.