DAI-C8-EC: PostgreSQL: Instal.lació i configuració. Consola

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

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:

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

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines