DAI-C8-EC: PostgreSQL: Instal.lació i configuració. Consola
Teoria
UD6_DAI-C8-EC._PostgreSQL:_Instal.lació_i_configuració._Consola
usuaris de Windows
A l'hora de seguir la pràctica, els usuaris de Windows es trobaran unes quantes diferències. El primer dubte és com executar psql (que a Windows és psql.exe). Hem de saber on es troba. Quan fer inicio de programes > psql no estem executant psql.exe, sinó un script .bat que el crida.
runsql.bat (C:\Program Files\PostgreSQL\9.1\scripts\runpsql.bat)
@echo off
REM PostgreSQL server psql runner script for Windows
REM Dave Page, EnterpriseDB
SET server=localhost
SET /P server="Server [%server%]: "
SET database=postgres
SET /P database="Database [%database%]: "
SET port=5432
SET /P port="Port [%port%]: "
SET username=postgres
SET /P username="Username [%username%]: "
for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "
REM Run psql
"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%
pause
Fixar-se bé quina és la ruta per defecte a Windows de l'executable:
C:\Program Files\PostgreSQL\9.1\bin\psql.exe.
En la carpeta bin/ també es troben altres executables que pots necessitar com ara createdb.exe, createuser.exe
Per tant haurem de fer
cd C:\Program Files\PostgreSQL\9.1\bin\psql.exe psql.exe -h localhost -p 5432 -U postgres -d postgres
i ara ja podem executar psql tal com s'ha vist a classe.
Feina a realitzar
El més bàsic de psql és:
postgres# \? postgres# \h postgres# \dt (per veure les taules) postgres# \c (per connectar-te a una altra base de dades i/o amb un altre usuari) postgres# \! executar una comanda del SO postgres# \echo [cadena] -> sortida estàndard postgres# \qecho [cadena] -> sortida de consultes
proves que s'han de fer:
- a) psql -h localhost -p 5432 -U postgres -d postgres
- b) psql -h localhost -p 5432 -U pepito -d pepito
- c) psql -h 192.168.0.10 -p 5432 -U dai2aXX -d dai2aXX (password: dai)
En l'apartat b), connectat amb l'usuari postgres a la bd postgres, has de crear un usuari que es digui pepito, has de crear la base de dades pepito, i has de donar tots els permisos a l'usuari pepito sobre la base de dades pepito. Una altra possibilitat seria que pepito fos el propietari de pepito, però això només es podria fer si pepito tingués permisos per crear bases de dades, que d'entrada no té.
Interessant l'ús de la comanda COPY (és una comanda SQL, no psql):
restaurant=# COPY (select * from cambrer) TO '/home/joan/cambrer.txt'; COPY 5 restaurant=# \!cat /home/joan/cambrer.txt 1 Pere 2 Maria 3 Tomàs 4 Jaume 5 Eric
Entrega
La idea és utilitzar un script d'entrada per executar les comandes, i un fitxer de sortida per veure els resultats. Existeixen les comandes \i, \o, \w i \copy des del prompt de psql>. (La funcionalitat que teníem amb el SPOOL de l'Oracle encara no s'ha aconseguit)
Opció \o:
1) it writes the results *only* to the file, not the screen. 2) it affects only the results, not the commands. You should be able to get around the first limitation by invoking \o |tee file
Si volem executar un fitxer de comandes des del SO, invocant a psql, utilitzarem l'opció -f:
$ psql -U postgres -h localhost -d restaurant -f /ruta/script.sql
El normal és que l'arxiu script.sql comenci amb un
\w /ruta/sortida.txt
i que tingui verbositat (amb \echo o \qecho)
Si volem executar una comanda SQL:
$ psql -U postgres -h localhost -d restaurant -c 'select * from cambrer;'
creat per Joan Quintana Compte, 2009-2012