PostgreSQL

Si tratta di un ottimo serer database, completamente sotto licenza GPL, molto leggero con ottime prestazioni, e ricco di caratteristiche che lo avvicinano al database relazionale di casa Oracle.

Cosa fare appena installato il server per iniziare ad usarlo

Una volta installato postgresql, dare:

su – pgsql 
initdb 
createdb

avviare il server con uno dei seguenti comandi (dipendono dal sistema operativo):

postgres -D /usr/local/pgsql/data 
pg_ctl -D /usr/local/pgsql/data -l logfile start 
/usr/local/etc/rc.d/postgresql start

I comandi principali della console psql

psql e' la cli tramite la quale si controlla il nostro db postgresql, i comandi basilari sono:

  • \l mostra la lista dei database
  • \c si connette ad un database
  • \d nometabella mostra info relative ad un db
  • \d mostra le tabelle

Per aggiungere un utente su postgresql

Per aggiungere utenti si usa:

createuser nomeutente

da utente pgsql. Oppure si puo' usare:

CREATE ROLE nomeutente OPZIONI

Opzioni disponibili:

LOGIN: Abilita il login per l'utente 
SUPERUSER: Ha i privilegi di amministratore 
CREATEDB: Puo' creare db 
CREATEROLES: puo' creare altri utenti 
WITH PASSWORD 'password': Setta la password

Abilitare le connessioni dall'esterno

Per abilitare le connessioni dall'esterno devo editare il file postgresql.conf nella cartella creata da postgresql. E decommentare (editandole opportunamente le seguenti linee:

listen_addresses = '*'
port = 5432

Queste modifiche richiedono il riavvio del server.

I parametri utili per psql

Ecco alcuni parametri utili per la cli psql:

–d dbname ''Permette di accedere al db chiamato dbname''
–f nomefile per leggere le queries direttamente da un file
–U nomeutente per far autenticare un utente

Permettere ad host remoti di connettersi al db

Per permetter ad host remoti di autenticarsi al db devo editare il file pg_hba.conf (Il percorso dipende sempre dal sistema operativo, normalmente una in una sottocartella di /etc) e aggiungere una linea simile a:

host	  all	  all	  192.168.1.1/24	trust

Il formato generico e' il seguente:

host  	DATABASE 		USER		IP/NETMASK	METHOD 

Inserimento dati, creazione tabelle

L'inserimento dei dati avviene nella seguente maniera:

INSERT INTO tab1 VALUES ('value1','value2',...,'valuen');

Per creare una tabella con la chiave autoincrementante:

CREATE TABLE nomeTabella ( id SERIAL PRIMARY KEY, ....);

Per inserire solo alcuni campi in una tabella:

INSERT INTO tab1 (campo1,campo2,...) VALUES(val1,val2,...);

Il file pg_hba.conf

Si trova nella cartella:

/etc/postgresql/VER/main/

Una linea tipica e' fatta nella seguente maniera:

local      database  user  auth-method  [auth-option]

Foreign keys

Per creare delle foreign keys dentro la dichiarazione di tabella inserire una riga simile alla seguente:

nomecampo   tipo     references nometabella(nomeCampoForeign)

Garantire l'accesso completo ad una tabella

Si usa GRANT, come nell'esempio:

GRANT ALL ON nomeschema.nometabella TO utente

In questo caso do accesso completo all'utente utente, nella tabella nometabella dello schema nomeschema

Mostrare gli schema di un Database

Per vedere gli schema presenti in un database dopo essersi connessi a tale DB, dare il comando:

\dn

Per vedere le tabbelle di uno schema invece basta dare:

\dt nomeschema.

Vedere i database esistenti

Si puo' usare psql per vedere i database presenti:

psql -l -U nomeutente

dove -l indica appunto di mostrare la lista dei databases presenti sul server.

Vedere i campi di cui e' composta una tabella

Per vedere quali sono i campi di cui e' composta una tabella basta dare:

\d quote_man.us_domain

Fare il dump e restore di un db

Per dumpare il database per prima cosa fare:

su - postgres

(o l'equvialente dell'user postgresql sul vostro sistema). Dopo di che scegliete il db da dumpare con:

psql -l 

e date:

pg_dump nomedb > output.sql

Per importare invece farete:

psql -d nomedb -f output.sql

Attenzione che il database nomedb deve esistere per poter esser eseguito l'import.

Aggiornare un campo in una tabella

Si usa la UPDATE, con la seguente sintassi:

UPDATE nomeschema.nometabella SET campo = valore WHERE condizione;

dove valore puo' anche essere una espressione.

Creare un database

Per creare un database:

CREATE DATABASE nomedatabase

Per creare un database e dare l'owner ad un utente:

CREATE DATABASE nomedatabase WITH OWNER nomeutente

Vedere utenti e gruppi da psql

Per vedere gli utenti si puo' usare o \du per informazioni veloci, altrimenti si puo' usare:

SELECT * FROM pg_user;

Per vedere i gruppi invece si usa:

SELECT * FROM pg_group;
 
postgresql.txt · Last modified: 2009/05/08 10:27 by finarfin
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki