You are on page 1of 29

Configuracin bsica de PostgreSQL

Dom, 29/03/2009 - 21:56 rafaelma

PostgreSQL se puede empezar a utilizar nada ms terminar de instalarlo y despues de inicializar nuestro "cluster", sin necesidad de configurar nada. Pero si vamos a utilizar PostgreSQL para algo importante y con cierto volumen de datos y usuarios es imprescindible que lo configuremos para dicho traba o. !o es la primera vez que algun asuario protesta o esta super preocupado de lo mal y lo lento que funciona su cluster de base de datos PostgreSQL en un servidor ultimo modelo con muchisima memoria. !ormalmente el problema es que PostgreSQL no ha sido configurado para traba ar con el volumen de datos y usuarios con el que lo estamos usando. !o es una gran ayuda tener un servidor con varios "#ytes de memoria $%& si le hemos dicho a PostgreSQL, por e emplo, que no utilice ms de '(&#ytes. )ambien tenemos que decir que cualquier base de datos que se este usando activamente, no solo PostgreSQL, es un elemento dinamico y vivo en el que estamos cambiando los datos constantemente y donde el tama*o de los datos almacenados suele ir creciendo con el tiempo. +sto significa que una configuracion que funcione bien con ciertos valores hoy, puede que no funcione tan bien despues de unos meses de uso y que necesite a ustarse para que funcione optimalmente. +l comportamiento de PostgreSQL en nuestro sistema se puede controlar con tres ficheros de configuraci,n que se encuentran en el directorio de datos donde inicializamos nuestro cluster PostgreSQL -+n nuestro caso /var/pgsql/data.. +stos tres ficheros son/
pg_hba.conf: Este fichero se utiliza para defi ir los difere tes tipos de

accesos !ue u usuario tie e e el cluster" pg_ident.conf: Este fichero se utiliza para defi ir la i formaci# ecesaria e el caso !ue utilicemos u acceso del tipo ide t e pg_hba.conf "
postgresql.conf: E

este fichero podemos cam$iar todos los parametros de co fi%uracio !ue afecta al fu cio amie to & al comportamie to de 'ost%re()* e uestra ma!ui a"

Pasamos a continuaci,n a e0plicar los cambios mas importantes que podemos hacer en algunos de estos ficheros.

pg_hba.conf
+ste fichero se utiliza para definir como, donde y desde que sitio un usuario puede utilizar nuestro cluster PostgreSQL. )odas las lineas que empiezen con el caracter # se interpretan como comentarios. +l resto debe de tener el siguiente formato/
[Tipo de conexion][database][usuario][IP][Net as!][Tipo de autentificacion][opciones]

1ependiendo del tipo de cone0ion y del tipo de autentificacion, [IP],[Net as!] y [opciones] pueden ser opcionales. 2amos a e0plicar un poco como definir las reglas de acceso. +l tipo de cone0ion puede tener los siguientes valores, local" host" hostssl y hostnossl. +l tipo de metodo puede tener los siguientes valores, trust" re#ect" d$" cr%pt" pass&ord" !rb$" ident" pa o ldap 3na serie de e emplos nos ayudaran a comprender me or como podemos configurar diferentes accesos al cluster PostgreSQL. + emplo 4 .5 %cceso por tcp6ip -red. a la base de datos test''(, como usuario test desde el ordenador con 7P ('.'.'.('', y metodo de autentificacion d$/
host test''( test ('.'.'.('' )$$.)$$.)$$.)$$ d$

+sta misma entrada se podria escribir tambien con la mascara de red en notacion 871$/
host test''( test ('.'.'.(''/*) d$

+ emplo ( .5 %cceso por tcp6ip -red. a la base de datos test''(, como usuario test desde todos los ordenadores de la red ('.'.'.', con mascara de red )$$.)$$.)$$.' -(9: ordenadores en total. y metodo de autentificacion d$/
host test''( test ('.'.'.' )$$.)$$.)$$.' d$

+sta misma entrada se podria escribir tambien con la mascara de red en notacion 871$/
host test''( test ('.'.'.'/)+ d$

+ emplo ' .5 %cceso por tcp6ip -red., encriptado, a todas las bases de datos de nuestro cluster, como usuario test desde el ordenador con 7P ('.'.'.('', y el ordenador 4;.4.4.4;; y metodo de autentificacion d$ -necesitamos dos entradas en nuestro fichero pg_hba.conf/
hostssl hostssl all all test test ('.'.'.('' )$$.)$$.)$$.)$$ ('.(.(.('' )$$.)$$.)$$.)$$ d$ d$

+ emplo :.5 1enegar el acceso a todos las bases de datos de nuestro cluster al usuario test, desde todos los ordenadores de la red 4;.;.;.;6(: y dar accesso al resto del mundo con el metodo d$/
host host all all test ('.'.'.'/)+ all '.'.'.'/' re#ect d$

%si podriamos seguir ugando con todas las posibilidades que nos brinda este fichero de configuracion. Por supuesto que las bases de datos y usuarios usados en este fichero tienen que e0istir en nuestro cluster para que todo funcione y algunos de los parametros solo se pueden usar si hemos compilado con las opciones pertinentes en el proceso de instalacion -por e emplo, hostssl, pam, <rb9. Para poder en produccion los cambios en este fichero tendremos que decirle a PostgreSQL que vuelva a leerlo. #asta con un simple 'reload' -/usr/local/bin/pg_ctl ,/var/pgsql/data reload. desde la linea de comandos o con la funcion pg=reload=conf-. como usuario postgres desde psql, el cliente PostgreSQL.
[postgres.servidor]# /usr/local/bin/psql /elco e to psql 0.).+" the Postgre123 interactive ter inal. T%pe4 5cop%right for distribution ter s 5h for help &ith 123 co ands 56 for help &ith psql co ands 5g or ter inate &ith se icolon to execute quer% 5q to quit

postgres7# 18389T pg_reload_conf:;< pg_reload_conf ,,,,,,,,,,,,,,,, t :( ro&; postgres7#

Para una documentacion detallada sobre el fichero pg=hba.con, pasaros por la seccion 8hapter (;. 8lient %uthentication de la documentacion oficial de PostgreSQL.

postgresql.conf
Los cambios que realicemos en este fichero afectaran a todas las bases de datos que tengamos definidas en nuestro cluster PostgreSQL. La mayoria de los cambios se pueden poner en produccion con un simple 'reload' -/usr/local/bin/pg_ctl ,/var/pgsql/data reload., otros cambios necesitan que arranquemos de nuevo nuestro cluster -/usr/local/bin/pg_ctl ,- /var/pgsql/data restart..

&as informacion sobre todos los parametros que podemos cambiar en este fichero, que afectan y como se pueden poner en produccion se puede encontrar en la seccion 4>. Server 8onfiguration de la documentacion oficial de PostgreSQL. % continuacion vamos a ver los parametros mas importantes que deberiamos cambiar si empezamos a usar PostgreSQL para un uso serio y si queremos sacarle el ma0imo partido a nuestra maquina. +0isten muchos mas parametros que se pueden y con el tiempo se deberan de a ustar, aqui nos vamos a centrar en los mas importantes y los cuales deberiamos cambiar antes de empezar a utilizar PostgreSQL de una manera seria.
ax_connections/ !umero ma0imo de clientes conectados a la vez a nuestras bases de datos. 1eberiamos de incrementar este valor en proporcion al numero de clientes concurrentes en nuestro cluster PostgreSQL. 3n buen valor para empezar es el 4;;/ ax_connections 7 ('' shared_buffers/ +ste

parametro es importantisimo y define el tama*o del buffer de memoria utilizado por PostgreSQL. !o por aumentar este valor mucho tendremos me or respuesta. +n un servidor dedicado podemos empezar con un (9? del total de nuestra memoria. !unca mas de 46' -''?. del total. Por e emplo, en un servidor con :"bytes de memoria, podemos usar 4;(:&# como valor inicial.
shared_buffers 7 (')+=>

/ 3sada en operaciones que contengan @$1+$ #A, 17S)7!8), oins, .... +n un servidor dedicado podemos usar un (5:? del total de nuestra memoria si tenemos solamente unas pocas sesiones -clientes. grandes. 8omo valor inicial podemos usar B &bytes.
&or!_ e &or!_ e 7 0=>

aintenance_&or!_ e / 3sada en operaciones del tipo 2%833&, %!%LAC+, 8$+%)+ 7!1+D, %L)+$ )%#L+, %11 E@$+7"! F+A. Su valor dependera mucho del tama*o de nuestras bases de datos. Por e emplo, en un servidor con :"bytes de memoria, podemos usar (9G&# como valor inicial. aintenance_&or!_ e 7 )$?=>

effective_cache_si@e/ Parametro

usado por el Hquery plannerH de nuestro motor de bases de datos para optimizar la lectura de datos. +n un servidor dedicado podemos empezar con un 9;? del total de nuestra memoria. 8omo ma0imo unos (6' -GG?. del total. Por e emplo, en un servidor con :"bytes de memoria, podemos usar (;:B&# como valor inicial.
effective_cache_si@e 7 )'+0=> chec!point_seg ents/ +ste

parametro es muy importante en bases de datos con numerosas operaciones de escritura -insert,update,delete.. Para empezar podemos empezar

con un valor de G:. +n grandes databases con muchos "bytes de datos escritos podemos aumentar este valor hasta 4(B5(9G.
chec!point_seg ents 7 ?+

+s muy importante tener en cuenta que al aumentar los valores por defecto de muchos de estos parametros, tendremos que aumentar los valores por defecto de algunos parametros del <ernel de nuestro sistema. 7nformacion detallada de como hacer esto se encuentra en la seccion 4G.:. &anaging Fernel $esources de la documentacion oficial de PostgreSQL. +n fin, esto es solo un aperitivo de lo que podemos hacer. 8on la practica y la e0periencia podremos y tendremos que a ustar otros muchos parametros. Pero esto sera materia de un pro0imo articulo. Fuentes: postgresql.org.

PostgreSQL: Extraer los ca pos de una fecha


3no de los recursos ms almacenados en las bases de datos son las fecha, e0istiendo ocasiones en las cuales se deben obtener algunos campos de la fecha, para este e emplo se utilizar la tabla personas creada como se observa a continuaci,n/ create table personas id S+$7%L !@) !3LL, rut varchar-49. !3LL, nombre varchar-';. !3LL, apaterno varchar-';. !3LL, amaterno varchar-';. !3LL, fecha=nac date !3LL, hora=nac time !3LL, se0o varchar-4. !3LL, direccion varchar-';. !3LL, ciudad varchar-';. !3LL, telefono integer !3LL, created timestamp !@) !3LL, modified timestamp !3LL, constraint p<=personas primary <ey -id. .I 1e esta tabla se rescataran cada uno de los campos de la creaci,n del registro por separados y a dems se obtendr el dJa de la semana al que corresponde la fecha de creaci,n del registro. S+L+8)

rut, e0tract-year from created.//int as anyo, e0tract-month from created.//int as mes, e0tract-day from created.//int as dia, e0tract-hour from created.//int as hour, e0tract-minute from created.//int as minuto, e0tract-second from created.//int as segundo, 8%S+ e0tract-doK from created. LM+! ; )M+! H1omingoH LM+! 4 )M+! HLunesH LM+! ( )M+! H&artesH LM+! ' )M+! H&iercolesH LM+! : )M+! HNuevesH LM+! 9 )M+! H2iernesH LM+! G )M+! HSabadoH +!1 as doK E$@& personas I 8on esta consulta se obtiene toda la fecha de creaci,n desglosada completamente, a dems permite obtener el dJa de la semana en que fue creado utilizando el 8%S+ que permite seleccionar entre los valores el valor obtenidos y lo convierte en una cadena con el nombre del dJa. e0tract-campo from fuente. $ecupera los valores de una fecha6hora, donde la fuente es un campo del tipo de dato fecha6hora, en este caso en particular un timestamp, mientras que el campo es el tipo de valor recuperado de la fecha, los campos e0istentes en las variables de fecha6hora son los siguientes/ century/ devuelve el siglo de la fecha, no e0iste siglo ;, solo e0iste desde el 54 al 4. + . el a*o (;;; es el siglo (;, mientras que el a*o (;;4 es el siglo (4. day/ devuelve el dJa del mes, va desde el 4 al '4 segOn el mes que corresponda.

decade/ divide el campo del a*o en 4;. + . el a*o (;;4 serJa la decada (;;. doK/ devuelve el dJa de la semana que va desde ; a G, donde el ; corresponde al domingo. doy/ devuelve el dJa del a*o que va desde 4 al 'G96'GG segOn corresponda. epoch/ devuelve el numero de segundos desde el 4P>;5;45;4. +ste valor puede ser negativo.)ambiQn se puede utilizar para obtener el numero de segundos en un intervalo de tiempo. + . S+L+8) +D)$%8)-+P@8M E$@& 7!)+$2%LH9 day ' hoursH.I

hour/ devuelve la hora de la fecha, este valor esta entre ; y ('. microseconds/ +l tiempo en segundos, incluyendo la parte fraccionaria multiplicada por 4.;;;.;;;. millennium/ devuelve el valor del milenio del a*o. + . el a*o 4PP; es el milenio ( y el a*o (;;4 es el milenio '. milliseconds/ devuelve los segundos del campo tiempo multiplicado por 4.;;;. minute/ devuelve los minutos del campo, este valor esta definido entre ; y 9P. month/ Para valores timestamp, devuelve el numero del mes sin el a*o, los valores estn definidos entre ; y 4(. )ambiQn permite obtener intervalos de meses. + . S+L+8) +D)$%8) -&@!)M E$@& 7!)+$2%L H( years ' monthsH.I quarter/ 1ivide el a*o en cuatro y devuelve valores entre 4 y :, segOn el intervalo en que se encuentre el dJa en el a*o. second/ devuelve la cantidad de segundos incluyendo la parte fraccionaria del campo. timezone/ La zona horaria en 3)8, medida en segundos, los valores positivos corresponden a la zona horaria este de 3)8 y los valores negativos a la zona horaria oeste de 3)8. timezone=hour/ La hora correspondiente de la zona horaria. timezone=minute/ Los minutos correspondientes a la zona horaria. Kee</ +l nOmero de la semana del a*o. year/ devuelve el a*o de la fecha, no hay a*o ;, asJ que hay a*os antes de 8risto y despuQs de 8risto.

""racias, por compartir tus conocimientos" Publicado por p -Nuan Pablo. en ((/;9 !o hay comentarios/ +nviar por correo electr,nico+scribe un blog8ompartir con )Kitter8ompartir con Eaceboo< +tiquetas/ PostgreSQL

!ue"es# $% de octubre de $&'&


PostgreSQL: (ngreso a la base de datos sin cla"e
+l usuario de una base de datos postgres puede desear acceder al motor de base de datos sin tener que ingresar la clave. Para lograr esto se debe crear el archivo ".pgpass" en el directorio home del usuario que

desea ingresar sin la passKord. +l archivo debe contener lJneas con el siguiente formato. hostname/port/database/username/passKord +n el archivo los campos descritos contienen la siguiente informaci,n/ hostname 5R debe escribir "localhost" si la base de datos se encuentra en el mismo equipo, de encontrarse en otro se debe escribir la ip del equipo o el nombre del equipo en la red. port 5R se debe ingresar el numero del puerto de cone0i,n al postgres, por defecto el puerto de cone0i,n de postgres es "9:'(".

database 5R se debe escribir el nombre de la base de datos a la cual se desea ingresar. username 5R se debe escribir el nombre de usuario con el cual se desea acceder a la base de datos. passKord 5R se debe ingresar la passKord utilizada por el usuario para ingresar a la base de datos.

+ste archivo debe tener estrictamente los permisos de lectura y escritura solo para el usuario y ningOn permiso para el grupo u otros. Para revisar los permisos del archivo se puede e ecutar el siguiente comando. ls 5la .pgpass +sto entregara la siguiente lJnea como respuesta. 5rK5555555 4 nombreusuario nombregrupo pgpass tama*o fechamodificacion .

Si los permisos del archivo no estn como se observa en la lJnea anterior, se debe utilizar el siguiente comando para cambiar los permisos del archivo. chmod G;; .pgpass ""racias, por compartir tus conocimientos" Publicado por p -Nuan Pablo. en ((/:: 4 comentario/ +nviar por correo electr,nico+scribe un blog8ompartir con )Kitter8ompartir con Eaceboo< +tiquetas/ PostgreSQL

i)rcoles# $* de octubre de $&'&


PostgreSQL: Copiar resultado de un SELEC+ a un archi"o
+0isten ocasiones en las que es deseable pasar los resultados de un S+L+8t a un archivo, postgres permite que realices esta operaci,n. Para esto debes e ecutar el siguiente comando en la consola del postgres.

postgresSTcopy -select U from nombre=tabla. to Hdirectorio=name6file=nameHI

+sto permite copiar todos los datos obtenidos en el select al archivo ubicado en el directorio seleccionado. Para que quede ms claro se puede observar el siguiente e emplo que es e ecutado en la consola de postgres en un equipo con linu0 instalado. postgresSTcopy -select U from alumnos. to H6tmp6datos.t0tHI 7&P@$)%!)+/ +s importante recordar algunos comandos de postgres que permiten obtener ayuda. postgresSTVh SR permite obtener ayuda de los comandos de postgres. postgresSTVhelp comando SR permite obtener ayuda de un comando especifico de postgres.

postgresSTVW SR permite obtener ayuda de los comandos del cliente de postgres.

%ntes de terminar debo aclarar que "postgresST" indica que el comando es e ecutado en la consola del postgres. ""racias, por compartir tus conocimientos" Publicado por p -Nuan Pablo. en (4/;> !o hay comentarios/ +nviar por correo electr,nico+scribe un blog8ompartir con )Kitter8ompartir con Eaceboo< +tiquetas/ PostgreSQL

artes# $, de octubre de $&'&


PostgreSQL: -odos de ingreso# creacin de usuarios . base de datos
1espuQs de instalar PostgreSQL en un equipo con 3buntu se debe ingresar al sistema con un usuario y a una base de datos e0istentes en el motor de base de datos, para esto se puede utilizar el siguiente comando. sudo 5u usuario psql base=de=datos 8omo usuario se debe utilizar postgres y como base de datos postgres, esto permitir al usuario ingresar al motor de base de datos sin necesidad de una clave ms que la del superusuario. 3na vez que se ha ingresado se debe crear un usuario para traba ar con las bases de datos, esto se puede realizar con el siguiente comando. 8$+%)+ 3S+$ "usuario" L7)M 8$+%)+1# 8$+%)+3S+$ P%SSL@$1 HpassKordH 8omo usuario se debe ingresar el nombre del usuario que se crear y como passKord la clave de ingreso del usuario, por e emplo para crear como usuario el mismo de php se debe escribir lo siguiente.

8$+%)+ 3S+$ "KKK5data" L7)M 8$+%)+1# 8$+%)+3S+$ P%SSL@$1 HKKK5dataH

Para crear una base de datos que sea propiedad del usuario que se ha creado se debe utilizar el comando escrito a continuaci,n. 8$+%)+ 1%)%#%S+ nombre=base=datos L7)M @L!+$ S "usuario" 3na vez que el usuario y la base de datos del mismo han sido creados se puede ingresar a PostgreSQL con el siguiente comando. psql 5h localhost 53 usuario nombre=base=datos Luego el motor solicita la passKord ingresada para el usuario en el proceso de creaci,n. %hora puedes realizar todas las operaciones que desees con la base de datos que acabas de crear. ""racias, por compartir tus conocimientos" Publicado por p -Nuan Pablo. en ((/9: !o hay comentarios/ +nviar por correo electr,nico+scribe un blog8ompartir con )Kitter8ompartir con Eaceboo< +tiquetas/ PostgreSQL

lunes# $/ de octubre de $&'&


PostgreSQL: Control de Secuencias
+n PostgreSQL se pueden crear tablas con "primary <ey" autoincrementables, como se pude observar en el siguiente e emplo. create table alumnos id S+$7%L not null, nombre varchar-(99. !3LL, constraint p<=beneficios primary <ey -id..I +sto creara una secuencia autoincrementable para la "primary <ey" como se observa a continuaci,n. id integer not null valor por omisi,n ne0tval-Halumnos=id=seqH//regclass.

+n ocaciones es necesario observar o modificar los valores de la secuencia, para realizar estas operaciones, se pueden utilizar las siguientes sentencias.

"S+L+8) last=value E$@& nombre=secuenciaI"/ $etorna el Oltimo valor de la secuencia. "S+L+8) ne0tval-Hnombre=secuenciaH.I"/ $etorna el valor del Oltimo nOmero de la secuencia y lo incrementa en 4.

"S+L+8) setval -Hnombre=secuenciaH, valor.I"/ %signa el valor a la secuencia, obligando a ne0tval a retornar -valor X 4.. "S+L+8) setval-Hnombre=secuenciaH,valor,true.I"/ Eunciona del mismo modo que la sentencia anterior. "S+L+8) setval-Hnombre=secuenciaH,valor,false.I"/ %signa el valor a la secuencia, obligando a ne0tval a retornar -valor.. "S+L+8) currval-Hnombre=secuenciaH.I"/ $etorna el valor del Oltimo nOmero de la secuencia.

+l nombre=secuencia puede ser remplazado por "alumno=id=seq" del primer e emplo, mientras que el valor debe ser un entero mayor que ; -cero.. ""racias, por compartir tus conocimientos"

(aludos comu idad, +acie do prue$as respalda do u a $ase de datos 'ost%re()* e formato de te,to, el t-pico script "s!l, me di cue ta !ue puede resultar u dolor de ca$eza restaurarla" *a raz# es por!ue al restaurarla, co ps!l, puede !uedar co otro due.o difere te al ori%i al, por e/emplo del usuario post%res" E to ces, por pro$lemas de permisos os comie za a /oder" 0a compro$1 !ue co u 2*3E4 D23252(E 6$ase ame 789E4 37 6user: o se resuel;e el pro$lema" *e&e do este art-culo: http://<<<"comma dprompt"com/$lo%s//oshua=dra>e/2010/0?/a=$etter=$ac>up =<ith=post%res!l=usi %=p%=dump/ me do& cue ta !ue lo ideal es respaldarla e formato @custom@ Ausa do p%=dumpB, co esto fCcilme te restauramos parte Afu cio es, ta$las, """B o toda la $ase &, &a lo compro$1, co el due.o ori%i al Aco p%=restoreB" 4esulta ideal tam$i1 para respaldar $ases mu& %ra des" E resume : 4espaldar: p%=dump -D 6user ame --formatEc --fileE6m&data$ase"s!lc 6d$ ame

4estaurar parte de la $ase: p%=restore -D 6user ame --d$ ameE6d$ ame --i de,E6i de, ame p%=restore -D 6user ame --d$ ameE6d$ ame --fu ctio E6fu ctio ameAar%sB p%=restore -D 6user ame --d$ ameE6d$ ame --ta$leE6ta$le ame o la $ase completa: p%=restore -h localhost -D6user ame --d$ ameE6data$ase ame 6file ame *1a se el art-culo completo para mCs detalles" E esto toda;-a esto& o;ato, cual!uier aporte es $ie ;e ido :-B

-*eo Fim1 ez (a Fos1, Gosta 4ica <<<"%ee>%olo" et <<<"soft<areli$re"ucr"ac"cr f$"com/leo/ime ezcr t<itter"com/%ee>%olo

Copiar una Base de Datos Postgresql de un Equipo a Otro


5ue as" lue%o de $uscar por muchas <e$s de como copiar u a $ase de datos 'ost%res!l & o e co trar ada decidi realizar este post espero !ue sea de utilidad" Hersio del 'ost%res!l 9"2 como $ie sa$e las $ases de datos 'ost%res!l o crea u a carpeta co el om$re de ella como lo hace otros motores de $ases de datos, he ha& el pro$lema cua do !ueremos pasar uestra $ase de datos a otro e!uipo, u a forma de hacerlo es la si%uie te"

1" /u to co 'ost%res!l te er p%2dmi , el cual es u herramie ta %rafica !ue os facilita tra$a/ar co las $ases de datos" 2" le damos clic> derecho a la $ase de datos !ue esecitamos pasar a otro e!uipo & clic> so$re res%uardo A$ac>upB como se muestra e la ima%e "

I/D4*J (u$ido e su$ir ima%e esJ Her mas %ra de http://<<<"su$eima%e es"com/im%/ima%e 1-590225"html lue%o os aparece

I/D4*J (u$ido e su$ir ima%e esJ Her mas http://<<<"su$eima%e es"com/im%/ima%e 2-59022?"html esta parte es do de crearemos uestro archi;o !ue %uardara la $ase de datos e el om$re de archi;o el !ue desee Ae/emplo:$ac>up prue$aB, el formato si es mu& importa te !ue esco/a e tre Gustom o 3ar Arecomie do GustomB & por ultimo el 4ole ame seleccio amos post%res, lue%o damos e el $oto res%uardo A$ac>upB, ha& os muestra u a serie de me sa/es & el ultimo !ue es El proceso retor # el c#di%o de salida 0" de$e te er como ;alor siempre cero si tie e otro umero es !ue al%o ha !uedado mal" 3" &a te ie do uestro archi;o Ares%uardo o $ac>upB el cual tie e comprimida uestra $ase de datos, solo es ir al otro e!uipo & realizar lo si%uie te, creamos u a $ase de datos o importa el om$re & le damos clic> derecho & seleccio amos restaurar"

como se ;e e la ima%e "

I/D4*J (u$ido e su$ir ima%e esJ Her mas %ra de http://<<<"su$eima%e es"com/im%/ima%e 3-590235"html lue%o os aparece"

I/D4*J (u$ido e su$ir ima%e esJ <<<"su$eima%e es"com/im%/ima%e K-590236"html ;er mas %ra de e esta parte es do de seleccio amos uestro archi;o Ares%uardo o $ac>upB te ie do e cue ta el Lormato !ue sea el mismo !ue le i dicamos al mome to de crear el archi;o & 4ole ame este seleccio post%res, despues le damos restaurar" uestro me sa/e El proceso retor # el c#di%o de salida 0" de$e te er como ;alor cero de lo co trario al%o !uedo mal, o$ser;arcio al mome to de %e erar mas de u a restauracio a u a $ase de datos lo mas posi$les es !ue o lo %e ere, asi !ue recomie do !ue la cree de ue;o, recuerde !ue lo !ue ;amos a pasar es la i formacio de la $ase de datos & el om$re o importa" Hisiteme e : http://<<<"<e$sit"com"co/ Dise.o & 'ro%ramacio de pa%i as <e$"

Copia . recuperacin de una base de datos PostgreSQL


Posted by/ $oberto Lizana

Y8uantas veces hemos necesitado hacer copias y recuperaciones de nuestras base de datos en PostgreSQLW +n esta entrada le daremos un repaso a dos comandos imprescindibles para el administrador de base de datos. &e he encontrado a varios administradores de 1# que usan las copias y la restauraci,n para renombrar una base de datos, o simplemente para copiarlas. Si esta es tu intenci,n revisa el comando %L)+$ 1%)%#%S+ -para renombrar una #1. o 8$+%)+ 1%)%#%S+ Znombre=bd[ L7)M )+&PL%)+ -para hacer una copia.. Si tu intenci,n es volcar los datos en un fichero, sigue leyendo.

Copiar datos con pg_du p


p%=dump -i -h localhost -p 5K32 -D post%res -L c -$ -; -f @/usr/local/$ac>up/10"?0"0"61"$ac>up@ m&=data$ase

La lista de las opciones de pg_du p\ pg=dump 5W 5p, ]portSP@$) database server port number 5i, ]ignore5version proceed even Khen server version mismatches 5h, ]hostSM@S)!%&+ database server host or soc<et directory 53, ]usernameS!%&+ connect as specified database user 5L, ]passKord force passKord prompt -should happen automatically. 5d, ]dbnameS!%&+ connect to database name 5v, ]verbose verbose mode 5E, ]formatSc^t^p output file format -custom, tar, plain te0t. 5c, ]clean clean -drop. schema prior to create 5b, ]blobs include large ob ects in dump 5v, ]verbose verbose mode 5f, ]fileSE7L+!%&+ output file name

0estaurar datos con pg_restore


p%=restore -i -h localhost -p 5K32 -D post%res -d m&=data$ase -; @/usr/local/$ac>up/10"?0"0"61"$ac>up@

La lista de las opciones de pg_du p\


p%=restore -M -p, NportE'743 data$ase ser;er port um$er -i, Ni% ore-;ersio proceed e;e <he ser;er ;ersio mismatches -h, NhostE+7(392OE data$ase ser;er host or soc>et director& -D, Nuser ameE92OE co ect as specified data$ase user

-8, Npass<ord force pass<ord prompt Ashould happe automaticall&B -d, Nd$ ameE92OE co ect to data$ase ame -;, N;er$ose ;er$ose modeIlatest=t<eets userE@&our=user= ame=here@ umE@3@J

Realizar consultas a una base de datos PostgreSQL empleando las instrucciones del lenguaje SQL.
3na vez que ya nos hemos introducido un poco en el mundo de las base en dos artJculos anteriores, vamos a comenzar a ver c,mo podemos consultar los datos registrados en ellas, para ello vamos a ir ilustrado algunos e emplos y ver algunos e ercicios prcticos que sin duda nos van a ir ayudando mucho ms a comprender de lo que hablamos/ La sentencia SELEC+ es usada para obtener la informaci,n guardada en una tabla. La forma general de esta sentencia es/
18389T Infor aciAn BCD= Tabla /E8C8 9ondiciAn.

%quJ, Informacin es la informaci,n que queremos ver. +sta puede ser una lista de columnas, o un U para indicar "todas las columnas". Tabla indica el nombre de la tabla de la cual vamos a obtener los datos. La clusula 12E0E es opcional. Si est presente, la Condicin especifica las condiciones que los registros deben satisfacer para que puedan ser mostrados. La manera ms sencilla de la sentencia SELEC+ es cuando se recuperan todos los datos de la tabla/ SELEC+ 3 405- public.6traba!adores67

Si no deseamos ver los registros completos de una tabla, entonces tenemos que usar los nombres de las columnas en las que estamos interesados separndolas por coma.
18389T no bre" apellido(" apellido)" salario BCD= traba#adores<

)ambiQn es posible mostrar columnas calculadas a partir de la informaci,n contenida en otras columnas de la tabla. + emplo/
18389T no bre" salario" salarioF'.* BCD= traba#adores<

Los campos en la tabla resultante se muestran en el orden en que los solicitamos con la sentencia SELEC+ independientemente de cul sea el orden que tengan en la estructura de la tabla.
18389T no bre" apellido(" apellido) BCD= traba#adores<

@ podemos intercambiar el orden por e emplo/


18389T no bre" apellido(" apellido) BCD= traba#adores<

+n ocasiones la cantidad de registros que recuperamos es muy grande y el resultado de la consulta ocupa varias pantallas. +s posible _limitar` la cantidad de filas que se mostrarn como resultado de una consulta empleando la clusula L7&7) de la manera siguiente/
18389T F BCD= traba#adores 3I=IT $<

YQuQ podemos hacer para mostrar s,lo el 'er registro en la tabla traba adoresW +n Postgre las posiciones de los registros en la tabla comienzan a contarse a partir de cero. +L primer registro est en la fila cero. +l segundo registro est en la fila 4 y asJ sucesivamente hasta el registro n que estar en la fila n54. Por tanto para mostrar el registro que ocupa la 'ra posici,n debemos recuperar el registro de la fila T( y para lo cual podemos usar la clusula L7&7) de la manera siguiente/

18389T F BCD= traba#adores 3I=IT ( DBB18T )

8on L(-(+ ' 544SE+ $ estamos ordenando a PostgreSQL que devuelva 4 registro a partir de la fila (. %hora vamos a pasar a e0plicar una funci,n que consideramos pueda ser muy Otil e interesante para los usuarios/ C8S+# aplicando la funci,n 8%S) podemos convertir una cadena que contenga nOmeros en su representaci,n como nOmero tal como se muestra a continuaci,n/
9G1T :1H>1TC:idnu "('"(; G1 INT8I8C;

8on esta e0presi,n e0traemos el carcter que ocupa la posici,n 4; en el nOmero de identidad y lo convertimos o representamos como un nOmero entero PostgreSQL posee una estructura muy Otil que permite seleccionar cul debe ser el valor definitivo de campos calculados a partir de evaluar e0presiones aritmQticas que devuelvan un valor entero. La sinta0is de esta estructura es/
9G18 expression /E8N value TE8N result [/E8N ...] [8318 result] 8N-

+ emplos de su uso/
9G18 9G1T :1H>1TC:idnu "('"(; G1 INT8I8C ; J ) /E8N ' TE8N KED=>C8L /E8N ( TE8N K=HM8CL 8N-

3n posible problema real para utilizar esta funci,n de manera muy prctica puede ser a partir de posibles numeraciones de identidad y donde se sabe que en la posici,n 4; de la numeraci,n se encuentra el dato de si es &asculino o Eemenino a partir de si es par es &asculino y si es impar es Eemenino puede ser la siguiente/ Selecciones los 4; primeros registros a partir de la tabla de traba adores y conociendo los nOmeros de identificaci,n diga si son & o E.
18389T idnu " no bre" 9G18 9G1T :1H>1TC:idnu "('"(; G1 INT8I8C ; J ) /E8N ' TE8N NED=>C8N /E8N ( TE8N N=HM8CN 8N- G1 sexo BCD= TCG>GMG-DC81 3I=IT ('<

2olviendo a sinta0is ms sencillas para no perder neuronas con funciones de carcter un poco ms comple os vamos a terminar con la misma clusula que comenzamos pero profundizando un poquito ms en la misma. +s decir hasta el momento hemos empleado los comandos de PostgreSQL para recuperar y mostrar informaci,n almacenada en una tabla de la base de datos. Pero en todos los casos la informaci,n ha estado desorganizada. +n SQL es posible hacer una consulta indicando que los resultados queden ordenados atendiendo a un determinado criterio. 1icho de manera ms prctica, es posible recuperar datos y mostrarlos ordenados por una o ms columnas. Por e emplo/ Queremos obtener el listado de todos los traba adores pero mostrarlo ordenado alfabQticamente por el nombre.
18389T no bre" apellido(" apellido) BCD= TCG>GMG-DC81 DC-8C >O no bre<

#ueno colegas con este e emplo un poco ms sencillo cerramos por ahora e0hortndolos a profundizar un poco ms en las consultas y estudiando sus funciones ms potentes, sJganos en pr,0imos artJculos.

! " #istas
3na vista es una alternativa para mostrar datos de varias tablas. 3na vista es como una tabla virtual que almacena una consulta. Los datos accesibles a travQs de la vista no estn almacenados en la base de datos como un ob eto. +ntonces, una vista almacena una consulta como un ob eto para utilizarse posteriormente. Las tablas consultadas en una vista se llaman tablas base. +n general, se puede dar un nombre a cualquier consulta y almacenarla como una vista. 3na vista suele llamarse tambiQn tabla virtual porque los resultados que retorna y la manera de referenciarlas es la misma que para una tabla. Las vistas permiten/ 5 ocultar informaci,n/ permitiendo el acceso a algunos datos y manteniendo oculto el resto de la informaci,n que no se incluye en la vista. +l usuario solo puede consultar la vista. 5 simplificar la administraci,n de los permisos de usuario/ se pueden dar al usuario permisos para que solamente pueda acceder a los datos a travQs de vistas, en lugar de concederle permisos para acceder a ciertos campos, asJ se protegen las tablas base de cambios en su estructura. 5 me orar el rendimiento/ se puede evitar tipear instrucciones repetidamente almacenando en una vista el resultado de una consulta comple a que incluya informaci,n de varias tablas. Podemos crear vistas con/ un subcon unto de registros y campos de una tablaI una uni,n de varias tablasI una combinaci,n de varias tablasI un resumen estadJstico de una tablaI un subcon unto de otra vista, combinaci,n de vistas y tablas. 3na vista se define usando un "select". La sinta0is bsica parcial para crear una vista es la siguiente/
create vie& ND=>C8PI1TG as 18NT8N9IG1 18389T fro TG>3G<

+l contenido de una vista se muestra con un "select"/

select Ffro

ND=>C8PI1TG<

+n el siguiente e emplo creamos la vista "vista=empleados", que es resultado de una combinaci,n en la cual se muestran : campos/
create vie& vista_e pleados as select :apellidoQQN NQQe.no bre; as no bre"sexo" s.no bre as seccion" cantidadhi#os fro e pleados as e #oin secciones as s on codigo7seccion

Para ver la informaci,n contenida en la vista creada anteriormente tipeamos/


select Ffro vista_e pleados<

Podemos realizar consultas a una vista como si se tratara de una tabla/


select seccion"count:F; as cantidad fro vista_e pleados<

Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para distinguir una tabla de una vista podemos fi ar una convenci,n para darle nombres, por e emplo, colocar el sufi o _vista` y luego el nombre de las tablas consultadas en ellas. Los campos y e0presiones de la consulta que define una vista 1+#+! tener un nombre. Se debe colocar nombre de campo cuando es un campo calculado o si hay ( campos con el mismo nombre. !ote que en el e emplo, al concatenar los campos "apellido" y "nombre" colocamos un aliasI si no lo hubiQsemos hecho aparecerJa un mensa e de error porque dicha e0presi,n 1+#+ tener un encabezado, PostgreSQL no lo coloca por defecto. Los nombres de los campos y e0presiones de la consulta que define una vista 1+#+! ser Onicos -no puede haber dos campos o encabezados con igual nombre.. !ote que en la vista definida en el e emplo, al campo "s.nombre" le colocamos un alias porque ya habJa un encabezado -el alias de la concatenaci,n. llamado "nombre" y no pueden repetirse, si sucediera, aparecerJa un mensa e de error. @tra sinta0is es la siguiente/
create vie& ND=>C8PI1TG :ND=>C81-88N9G>8RG-D1; as 18NT8N9IG118389T fro TG>3G<

8reamos otra vista de "empleados" denominada "vista=empleados=ingreso" que almacena la cantidad de empleados por a*o/
create vie& vista_e pleados_ingreso :fecha"cantidad; as

select extract:%ear fro fechaingreso;"count:F; fro e pleados group b% extract:%ear fro fechaingreso;<

La diferencia es que se colocan entre parQntesis los encabezados de las columnas que aparecern en la vista. Si no los colocamos y empleamos la sinta0is vista anteriormente, se emplean los nombres de los campos o alias -que en este caso habrJa que agregar. colocados en el "select" que define la vista. Los nombres que se colocan entre parQntesis deben ser tantos como los campos o e0presiones que se definen en la vista. Las vistas se crean en la base de datos activa. %l crear una vista, PostgreSQL verifica que e0istan las tablas a las que se hacen referencia en ella. Se aconse a probar la sentencia "select" con la cual definiremos la vista antes de crearla para asegurarnos que el resultado que retorna es el imaginado. Se pueden construir vistas sobre otras vistas.

pg$dump % pg$restore &PostgreSQL'


'osted o Oarch 19, 2013 $& admi 'osted i 5ases de Datos

8uando se traba a con base de datos, uno de las cosas ms importantes de hacer es respaldar los datos en caso de que ocurra cualquier situaci,n que da*e nuestro servidor de base de datos. 1e nada nos servirJa hacer esos respaldos si no los podemos volver a cargar -restaurar. cuando lo necesitemos. +n este post, trataremos la forma de hacer respaldos y restauraci,n de datos cuando se utiliza postgreSQL como 1#&S.

Respaldando los datos( pg$dump


es una herramienta de lJnea de comandos que nos permita hacer un respaldo de alguna de las bases de datos -o todas. en nuestro servidor postgres. Permite hacer el volcado de datos en diferentes formatos ya sean compresos, te0to plano, etc. +n resumen, escribe en un archivo -o salida estndar. las instrucciones SQL necesarias para hacer un respaldo de la base de datos.
pg_du p

El formato del coma do p%=dump es: pg$dump )opciones* )nombre$base* E tre las opcio es !ue se puede utilizar estC : dbname: 9om$re de la $ase de datos de la !ue se desea hacer respaldo" "a o %data"onl+: +ace u ;olcado solo de los datos & o del es!uema" "c o %clean: Grea i struccio es para elimi ar los eleme tos a tes de crearlos" Es Ptil para e;itar los errores del tipo Qla relacio nombre_relacin &a e,isteR a la hora de restaurar el respaldo"

9C o :create/ +scribe las instrucciones para la creaci,n de la base de datos dentro del script del respaldo. 9f ;archi"o< o :file=;archi"o</ +scriba la salida -el volcado. en el archivo especificado. +n caso de que no se utilice esta opci,n, el volcado se hace a la salida estndar. 94 ;for ato_de_archi"o< o :for at=;for ato_de_archi"o</ Permite especificar el formato de la salida del dump. +l formato de salida puede ser/ p o plain/ )e0to plano. c o custo / Eormato de salida customizable. +ste tipo de salida siempre se realiza compreso por defecto. t o tar/ 8rea la salida en formato tar. 9n ;no bre_esque a< o :sche a=;no bre_esque a</ $ealiza el dumpOnicamente del esquema -y todos los ob etos que contengan. que concuerde con elanombre=esquemaR. Si no se especifica, se har un dump de todos los esquemas que no sean del sistema y que estQn en la base destino. Si se quiere incluir en el dump ms de un esquema se pueden poner multiples 5n anombre=esquemaR como sean necesarios. 9> ;no bre_esque a< o :exclude9sche a=;no bre_esque a</ @mite los esquemas que concuerden con anombre=esquemaR del dump a realizarse. Se pueden incluir tantos 5 ! como sean necesarios. 9s o :sche a9onl./ Mace un volcado Onicamente del esquema, no de los datos. 9t ;no bre_tabla< o :table=;no bre_tabla</ Mace un volcado solo de las tablas que se especifiquen. Se pueden utilizar 5t anombre=tablaR tantas veces como se necesite. Se debe tener en cuenta que pg=dump no hace un seguimiento de las tablas de las que pueda depender la tabla que se desee volcar con el dump, asJ que hay que tener cuidado de

incluirlas todas las que sean necesarias -que tengan relaci,n con llaves primarias o forneas. para garantizar que se puede hacer la restauraci,n de los datos e0itosamente. 9+ ;no bre_tabla< o : exclude9table: ;no bre_tabla</ +0cluye del dumplas tablas listadas. +sta opci,n puede ser utilizada ms de una vez. : inserts/ 3tiliza inserts en lugar de copy en las instrucciones de SQL. : port = ;puerto</ +specifica el puerto )8P o local en el cual el servidor est escuchando. 9? ;no bre_de_usuario</ +specifica el nombre de usuario con el que se har la cone0i,n a la base de datos que se desea respaldar.
E/emplos: (i te emos u a $ase de datos llamada $ase=de=prue$a & !ueremos respaldarla completame te e u archi;o llamado $ase=de=prue$a"s!l, podemos utilizar el si%uie te coma do: pg$dump base$de$prueba , base$de$prueba.sql

Para hacer el volcado en un archivo de e0tensi,n personalizada -opci,n 5 E y c para custom./


pg$dump "-c base$de$prueba , base$de$prueba.dump

Para volcar solo una tabla de la base/


pg$dump "t nombre$tabla base$de$prueba , mi$tabla$dump.sql

Restaurando los datos( pg$restore


Para realizar la restauraci,n de los datos volcados con pg=dump, podemos utilizar la herramienta pg=restore. pg=restore restaura una base de datos que ha sido respaldada con pg=dump. +ntre las venta as de utilizar esta utilidad para la restauraci,n es que se puede seleccionar quQ partes del respaldo se quieren restaurar o incluso reordenar los items antes de hacer la restauraci,n La sint0is del comando es la siguiente/
pg$restore )opciones* ).ic/ero$a$restaurar*

+ntre las opciones ms comunes utilizadas con este comando estn/

9a o :data9only/ $estaura solo los datos, no el esquema. 9c o :clean/ +limina los ob etos antes de volverlos a crear. 9C o :create/ 8rea la base de datos especificada con la opci,n 5d, sin embargo, los datos son restaurados a la base de datos que aparece en el script. 5d anombre=baseR o ]dbnameSanombre=baseR/ 8onecta a la base de datosanombre=baseR y restaura los datos directamente en ella. 9! ;nu ero< o :!obs=;nu ero</ $ealiza la restauraci,n de los datos utilizandoanumeroR hilos o procesos -dependiendo del sistema operativo.. 8ada jobs es un proceso o hilo que utiliza una cone0i,n separada. La utlizaci,n de esta opci,n, permite poder restaurar un dump en una forma ms rpida, sin embargo, utiliza ms recursos en el servidor. La velocidad de la restauraci,n, por tanto, depende en gran medida de la configuraci,n del hardKare del servidor. 9n ;no bre_esque a< o :sche a=;no bre_esque a</ $ealiza la restauraci,n Onicamente del esquema llamado anombre=esquemaR. 9s o :sche a9onl./ $estura solo el esquema, no los datos. 9t ;no bre_tabla< o :table=;no bre_tabla</ $estaura Onicamente la tabla con el nombre anombre=tablaR. anombre=tablaR puede ser una e0presi,n regular. 9? ;no bre_usuario< o :userna e=;no bre_usuario</ !ombre de usuario con el que se desea hacer la cone0i,n. 3no de las cosas a tomar en cuenta a la hora de restaurar un respaldo es que si Qste ha sido hecho en un formato particular -custom., no podr ser visible con herramientas como more,cat o algOn editor de te0to.
De$ido a !ue o se puede ;er !ue usuarios se utiliza o a !ue $ase de de$e co ectar, se puede correr pro$lemas a la hora de !uererlos restaurar e otra mC!ui a !ue o te %a los usuarios o $ases !ue correspo da co los !ue estC e el archi;o creado co p%=dump" D a forma de solucio ar esto es hacer u a restauraci# si especificar la $ase de datos a la !ue se desea restaurar los datos" Esto hace !ue p%=restore ma de la salida a la salida esta dar" Esta salida esta dar puede ser e ;iada a u archi;o !ue co te drC las i struccio es de respaldo e te,to pla o" 'or e/emplo, asumie do !ue te emos u archi;o creado co p%=dump e formato "dump, llamado respaldo-$ase"dump & !ueremos pasarlo a te,to pla o e u fichero, podemos hacer lo si%uie te: 0 pg$restore respaldo"base.dump , respaldo"base.sql

El operador S redireccio a la salida de la salida estC dar Apa tallaB al archi;o respaldo-$ase"s!l" Despu1s de ha$erse e/ecutado el coma do, el fichero puede ser leido co cual!uier editor de te,to"

@tros e emplos/
0 pg$restore "C "d postgres db.dump Grea la $ase de datos post%res Apor la opci# -GB pero siempre ;uelca los datos e la $ase !ue el script especifica" 0 pg$restore "d mi$base db.dump 4estaura los datos e la $ase llamada mi=$ase" Esta $ase de$e ha$er sido creada pre;iame te"

Gomo ha$rC otado, las herramie tas p%=dump & p%=restore comparte muchas opcio es comu es e tre s- & represe ta u par de herramie tas $asta te Ptiles a la hora de restaurar & ma ipular los respaldos hechos de uestras $ases de datos"

-unciones en PostgreSQL + pg1dmin


Los procedimientos almacenados de &ySQL , en postgreSQL se llaman funciones, pueden crearse desde consola, pero es mucho mas fcil utilizar pg%dmin. Para este tutorial, se emplearan dos tablas que consisten en una tabla llamada PE0S5>8 y otra tabla, llamada +50>E5, el c,digo para su creaci,n esta ms aba o, la tabla )orneo ademas hace uso de un SEQ?E>CE para generar un 71 autoincrementable, puedes ver un tutorial 8Q?(.
G4E23E 325*E perso a A @GT@ characterA?B 973 9D**, @9om$re@ characterA32B 973 9D**, edad i te%er 973 9D** DEL2D*3 1U, G79(342T93 @GT@ '4TO240 VE0 A@GT@B B G4E23E (E)DE9GE id=secue cia T9G4EOE93 1 OT9H2*DE 1

O2WH2*DE 92233?2036U5K??5U0? (3243 1U G2G+E 1: 2*3E4 325*E id=secue cia 789E4 37 post%res: G4E23E 325*E tor eo A @TD@ i te%er 973 9D** DEL2D*3 e,t;alAXid=secue ciaX::re%classB, ci=participa te characterA?B 973 9D**, cate%oria characterA16B 973 9D**, G79(342T93 @TD@ '4TO240 VE0 A@TD@B B

+l e emplo que crearemos es muy simple, teniendo algunos registros en la tabla P+$S@!%, crearemos una funci,n que nos permita registrar participantes en la tabla )@$!+@, con la restricci,n de que si la edad es mayor o igual de 4B a*os, se registren en la categorJa `&ayores`, caso contrario si la edad es menor de 4B a*os, corresponden a la categorJa `&enores`. 3n e emplo muy simple, pero que nos sirve para ver en su mayorJa las instrucci,n ms utilizadas en las funciones, parmetros, variables, consultas, instrucciones condicionales, etc. la funci,n completa la tienes en el siguiente c,digo/
declare -- se declara las ;aria$les a utilizar ci characterA?B: -- TD de ta$la perso a E GEDD*2 DE TDE93TD2D edad i te%er: -- la edad del participa te --la fu cio ;a e tre 5EYT9 & E9D $e%i ci E 61 : -- ci toma ;alor del parametro de e trada -- el ;alor de edad, sera calculado media te u a co sulta a la ta$la perso a edad E A select p"@edad@ from @perso a@ as p <here p"@GT@ E ci B: -- de acuerdo al ;alor de ED2D re%istramos al participa te e la cate%oria -- SE1U Oa&ores Z1U Oe ores si o, 97 (E 4EYT(342 92D2 ifA edad SE 1U B the i sert i to tor eoA ci=participa te, cate%oria B ;alues A ci, XOa&oresX B: retur X'articipa te re%istrado e la cate%oria O2074E(X: elsif A edad Z1U B the i sert i to tor eoA ci=participa te, cate%oria B ;alues A ci, XOe oresX B: retur X'articipa te re%istrado e la cate%oria OE974E(X: else retur XError: 9o se pudo completar el re%istroX: e d if: e d:

+n el siguiente video, veremos paso a paso su construcci,n y e ecuci,n

Campo autoincrement en PostgreSQL con pg1dmin222


+n Postgres a diferencia de &ySQL, colocar un campo con un valor autonumerico incrementable es un poco ms complicado pero no imposible, puede realizarse a travQs de comandos SQL, pero para facilitar el traba o es preferible utilizar una interfaz grfica como pg%dmin777. 5 8onQctate a Postgres y abre el pg%dmin777, selecciona la base de datos con la que traba aras y busca el campo @SequencesA# dale clic< derecho y elegi la opci,n @>eB SequenceCA.

5 +n la ventana que aparece @>eB SequenceCA, debes rellenar el campo >a e/ nombre para la secuencia, 5Bner/ el propietario que hara uso de la secuencia, en mi caso se llama _postgres_, (ncre ent/ el incremento, si lo de as vacio, incrementara de 4 en 4, pero es me or especificarlo, Start/ en que valor iniciara el incremento, tenemos otros valores para completar, pero por el momento lo que tenemos es suficiente. Para terminar dale @F

5 Para agregar esta secuencia en un campo de cualquier tabla, debemos darle un nombre a la columna, en este caso sera tambien @idA, el tipo de dato Data +.pe sera (nteger y en campo Default Ealue, debemos agregar la secuencia que creamos en el paso anterior, de la siguiente manera/ >EF+E8LGHsecuencia_idIJ, es decir/

A dale @F para crear la columna Aa tenemos nuestra campo creado con un valor autoincrementable de 4 en 4, cada vez que se agregue un registro a nuestra tabla, la secuencia a*ade 4 a nuestro campo _id`.