0% encontró este documento útil (0 votos)
118 vistas

Manual Postgresql

Este documento describe cómo eliminar objetos como tablas, índices, esquemas y la base de datos en PostgreSQL de forma secuencial y paso a paso. Primero se eliminan las claves foráneas, luego las claves primarias, seguido de restricciones únicas y de comprobación, columnas, tablas, secuencias, esquemas y finalmente la base de datos. También menciona métodos más directos para eliminar objetos como eliminar la base de datos o tablas con sus restricciones de un solo comando.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
118 vistas

Manual Postgresql

Este documento describe cómo eliminar objetos como tablas, índices, esquemas y la base de datos en PostgreSQL de forma secuencial y paso a paso. Primero se eliminan las claves foráneas, luego las claves primarias, seguido de restricciones únicas y de comprobación, columnas, tablas, secuencias, esquemas y finalmente la base de datos. También menciona métodos más directos para eliminar objetos como eliminar la base de datos o tablas con sus restricciones de un solo comando.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

En esta parte veremos como realizar la eliminacin de los objetos de la base de datos creada

anteriormente, pero con fines prcticos lo haremos paso a paso, ya que la eliminacin podra
ser tan sensilla como eliminar la base de datos directamente, o los componentes que lo
componen en cascada si fuese necesario.
Es necesario haber seguido el post anterior, el escript que necesitamos ejecutar antes de
realizar estos ejercicios lo tiene aqui:
Descargar Script: PostgreSQL Sentencias DDL.sql
--1) ELIMINACIN DE CLAVES FORNEAS (FOREIGN KEYS):
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDCarrera;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDPerAcad;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDModalidad;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT fk_IDContacto;
;;
--2) ELIMINACIN DE CLAVES PRIMARIAS (PRIMARY KEYS):
ALTER TABLE Admision.PerAcad
DROP CONSTRAINT pk_IDPerAcad;
;;
ALTER TABLE Admision.Carrera
DROP CONSTRAINT pk_IDCarrera;

;;
ALTER TABLE Persona.Contacto
DROP CONSTRAINT pk_IDContacto;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT pk_IDPostulante;
;;
ALTER TABLE Admision.Modalidad
DROP CONSTRAINT pk_IDModalidad;
;;
--3) ELIMINACIN DE RESTRICCIONES (UNIQUE):
ALTER TABLE Admision.Carrera
DROP CONSTRAINT uq_nombrecarrera;
;;
ALTER TABLE Persona.Contacto
DROP CONSTRAINT uq_ContactoDNI;
;;
ALTER TABLE Admision.Modalidad
DROP CONSTRAINT uq_Modalidad;
;;
--4) ELIMINACIN DE RESTRICCIONES (CHECK):
ALTER TABLE Persona.Contacto
DROP CONSTRAINT ck_Genero;
;;
ALTER TABLE Persona.Postulante

DROP CONSTRAINT ck_asistioexamen;


;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT ck_ingreso;
;;
ALTER TABLE Persona.Postulante
DROP CONSTRAINT ck_puntaje;
;;
--5) ELIMINACIN DE COLUMNAS (COLUMNS):
ALTER TABLE Admision.Carrera
DROP COLUMN IDCarrera,
DROP COLUMN Nombre;
;;
--6) ELIMINACIN DE TABLAS (TABLES):
DROP TABLE Admision.Carrera;
DROP table Persona.Contacto;
DROP table Persona.Postulante;
DROP Table Admision.PerAcad;
DROP TABLE Admision.Modalidad;
;;
--7) ELIMINACIN DE SECUENCIAS (SEQUENCE):
DROP SEQUENCE Persona.seq_idcontacto;
DROP SEQUENCE Admision.seq_idmodalidad;
;;
--8) ELIMINACIN DE ESQUEMAS (SCHEMAS) :

DROP SCHEMA Persona;


DROP SCHEMA Admision;
;;
--9) ELIMINACIN DE BASE DE DATOS (DATABASE):
DROP DATABASE DBAdmision;

Como explicaba en un inicio, podramos utilizar mtodos ms directos si queremos eliminar


un objeto, por ejemplo:
--1)Eliminar la base de datos con todos sus objetos:
DROP DATABASE DBAdmision; --en modo desconectados
--2)Eliminar una secuencia que est siendo utilizada por una tabla:
DROP SEQUENCE Persona.seq_idcontacto CASCADE;
DROP SEQUENCE Admision.seq_idmodalidad CASCADE;
--3)Eliminar una tabla con todos los constraints que posea:
DROP TABLE Admision.Carrera CASCADE;
DROP Table Admision.PerAcad CASCADE;
DROP TABLE Admision.Modalidad CASCADE;
DROP table Persona.Contacto CASCADE;
DROP table Persona.Postulante CASCADE;
--4)Eliminar un esquema con todos sus objetos
DROP SCHEMA Persona CASCADE;
DROP SCHEMA Admision CASCADE;

psql: La pequea gran herramienta I.


Mayo 4, 2009

psql es el cliente interactivo de lnea de comandos de PostgreSQL.


Este programa nos permite realizar las tareas mas comunes como ingresar, ejecutar un
query y ver los resultados obtenidos, pero adems incluye una serie de caractersticas
muy completas en cuanto a la integracin con scripts, que nos ser de mucha utilidad
para automatizar tareas repetitivas o peridicas.
Este artculo es una breve introduccin para su utilizacin, con la descripcin de las
funciones mas utilizadas.
1. Ejecutando psql
psql se invoca desde la linea de comandos y presenta una serie de opciones (flags) muy
abundante.
La forma de invocarlo es :
psql [OPCIONES] [BASE DE DATOS [USUARIO]]

Aqui va un detalle de las opciones mas utilizadas y algunas de las mas tiles:
Opcin
(flag)

Descripcin

Especifica con que usuario se conectar a la base de datos. Si


-U USUARIO esta opcin no es utilizada intentar conectarse el usuario que
ejecute psql.
Especifica a que base de datos conectarse inicialmente. (Si
-d [BASE DE esta opcin no es utilizada intentar conectarse a una base de
DATOS]
datos con el mismo nombre del usuario utilizado para
conectarse.)

-h EQUIPO

Especifica en que equipo se encuentra el servidor de base de


datos .Puede indicarse el nombre o la direccin IP del servidor.
Si no se especifica este parmetro, intentar conectarse al
equipo en donde se ejecuta psql.

-p PUERTO

Especifica en que puerto se encuentra ejecutando el servicio


de base de datos en el servidor .Si no se especifica este
parmetro, intentar conectarse al puerto por defecto (5432).

-c

Ejecuta solo el comando indicado como parmetro y luego

[COMANDO] sale.
-f
[ARCHIVO]

Ejecuta los comandos SQL contenidos en archivo indicado


como parmetro y luego sale.

-l

Lista las bases de datos disponibles y luego sale.

-o
[ARCHIVO]

Enva los resultados de las consultas al archivo indicado como


parmetro.

-L
[ARCHIVO]

Enva el registro de toda la sesin a un archivo indicado como


parmetro. Es muy til para mostrar una serie de comandos
ejecutados y sus resultados.

-H

Genera el resultado de las consultas en formato HTML.(La


combinacin de este comando con la opcin -o nos permite
realizar un script que genere reportes de manera muy sencilla.

-A

Genera el resultado de las consultas sin formatear el resultado.


Es muy til para pasar datos a otros formatos (por ejemplo,
para importar un archivo de texto a Excel)

-t

Imprime solo las filas seleccionadas (sin encabezados).

-x

Activa el formato expandido para mostrar los resultados. Este


formato muestra cada fila como una especie de ficha,
encabezada por el nmero de fila y con una linea por cada
columna.

-F
[CADENA]

Utiliza la cadena indicada como separador entre columnas.


Utilizando esta opcin en conjunto con -a se pueden generar
archivos tipo CSV (delimitados por comas ).

-t

Imprime solo las filas seleccionadas (sin encabezados).

Algunos ejemplos de la utilizacin de estas opciones:

Invocando psql especificando usuario,equipo, port y base de datos.

Generar un archivo tipo CSV (delimitado por comas) con el resultado de una consulta.

Generar un reporte HTML a partir de una consulta.

2. Dentro de psql (modo interactivo)


Una vez dentro de psql, entramos en modo interactivo, es decir, ejecutamos un comando
SQL y psql nos muestra el resultado del mismo.
En este modo tenemos tambin una gran cantidad de posibilidades, gracias a los
comandos propios de psql.
Estos comandos se ejecutan directamente desde la linea de entrada (prompt) de pql y
tienen la caracterstica de estar siempre precedidos por una barra como esta \.
Algunos de los comandos internos mas utilizados:
Comando
\c BASE DE

Descripcin
Permite reconectarse. Recibe como parmetros la base de

DATOS
USUARIO
EQUIPO
PUERTO

datos, usuario, equipo y puerto.

\q

Sale de psql.

\timing

Habilita en reporte de tiempos de ejecucin. Es muy util


para registrar cuanto tarda un SQL en ejecutarse.

\! COMANDO

Ejecuta el parmetro ingresado en el sistema operativo. Si


no se especifican parmetros sale temporalmente (hasta
que se cierra con exit) a la linea de comandos del
sistema operativo.

\e ARCHIVO

Invoca al editor de textos predeterminado. Si no se


especifica el parmetro ARCHIVO, edita el ltimo comando
SQL (del bfer interno). Si se especifica un archivo lo abre
con el mismo editor. (Para definir el editor preferido, usa la
variable EDITOR del sistema operativo.).

\g ARCHIVO

Ejecuta los comandos SQL almacenados en el bfer. Si se


especifica el parmetro ARCHIVO, el resultado es enviado
al archivo indicado, si no se muestra por pantalla.

\p

Imprime el contenido el bfer de SQL.

\w ARCHIVO

Guarda el contenido del bfer de SQL en un Archivo


(parmetro obligatorio).

\s ARCHIVO

Muestra la historia (ltimos comandos SQL ejecutados). Si


se especifica el parmetro ARCHIVO, el resultado es
enviado al archivo indicado, si no se muestra por pantalla..

\i ARCHIVO

Ejecuta los comandos SQL que estn almacenados en el


archivo.

\o ARCHIVO

Enva los resultados de las consultas al archivo indicado


como parmetro.

\dt

Lista todas las tablas.

\d TABLA

Lista las columnas de la tabla indicada como parmetro.


(Describe la tabla)

Ejemplos:

Listado de bases de datos, conexin a una base de datos en particular.

Ejecutar un comando del Sistema Operativo. Ejecutar SQLs almacenados en un archivo.

Eliminar todas las tablas de una base de datos


PostgreSQL
Procedimiento:
1- Utilizamos el siguiente comando para generar automticamente un script SQL con todos los
DROPs:
~$ psql -h <hostname> -t -d <database> -U <username> -c "SELECT
'DROP TABLE ' || n.nspname || '.' || c.relname || ' CASCADE;'
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1;" > droptables

Donde:
<hostname> = Nombre de la mquina donde reside la base de datos

<database> = Nombre de la base de datos

<username> = Nombre de usuario


2- Ejecutamos el script generado en el paso anterior:
~$ psql -h <hostname> -d <database> -U <username> -f droptables

Consultar todos los ndices en PostgreSQL y Oracle


PostgreSQL (hasta 14 ndices por tabla):
SELECT
UPPER(t.relname) as table_name
UPPER(a.attname) as column_name
FROM
pg_class t,
pg_class i,
pg_index ix,
pg_attribute a,
pg_namespace
WHERE
t.oid = ix.indrelid
AND i.oid = ix.indexrelid
AND a.attrelid = t.oid
AND (
a.attnum = ix.indkey[0]
OR a.attnum = ix.indkey[1]
OR a.attnum = ix.indkey[2]
OR a.attnum = ix.indkey[3]
OR a.attnum = ix.indkey[5]
OR a.attnum = ix.indkey[6]
OR a.attnum = ix.indkey[7]
OR a.attnum = ix.indkey[8]
OR a.attnum = ix.indkey[9]
OR a.attnum = ix.indkey[10]
OR a.attnum = ix.indkey[11]
OR a.attnum = ix.indkey[12]
OR a.attnum = ix.indkey[13]
OR a.attnum = ix.indkey[14]
)
AND t.relkind = 'r'
AND t.relnamespace = pg_namespace.oid
AND pg_namespace.nspname = 'public'
ORDER BY
t.relname,
a.attname;

Consultar llaves primarias y forneas en PostgreSQL


Llaves primarias en PostgreSQL (no funciona para llaves compuestas):

SELECT UPPER(conname) AS restriccion, UPPER(relname) AS tabla,


UPPER(pg_catalog.pg_attribute.attname) AS columna
FROM pg_catalog.pg_constraint, pg_catalog.pg_class,
pg_catalog.pg_attribute
WHERE contype = 'p'
AND conrelid = pg_catalog.pg_class.oid
AND conrelid = pg_catalog.pg_attribute.attrelid
AND pg_catalog.pg_attribute.attnum =
pg_catalog.pg_constraint.conkey[1]
ORDER BY UPPER(conname), UPPER(relname),
UPPER(pg_catalog.pg_attribute.attname);

Llaves forneas en PostgreSQL (no funciona para llaves compuestas):

SELECT UPPER(A.relname) AS tabla, UPPER(C.attname) AS columna,


UPPER(B.relname) AS tabla_foranea, UPPER(D.attname) AS columna_foranea
FROM pg_catalog.pg_constraint, pg_catalog.pg_class AS A,
pg_catalog.pg_class AS B, pg_catalog.pg_attribute C,
pg_catalog.pg_attribute D
WHERE contype = 'f'
AND conrelid = A.oid
AND confrelid = B.oid
AND conrelid = C.attrelid
AND confrelid = D.attrelid
AND C.attnum = pg_catalog.pg_constraint.conkey[1]

AND D.attnum = pg_catalog.pg_constraint.confkey[1]


ORDER BY UPPER(A.relname), UPPER(B.relname), UPPER(C.attname),
UPPER(D.attname);

Registrar todas las sentencias o peticiones en el log de


PostgreSQL en UBUNTU
Configurar la siguiente lnea en el archivo "/etc/postgresql/8.4/main/postgresql.conf":
log_statement = 'all'
Reiniciar el servidor PostgreSQL:
/etc/init.d/postgresql-8.4 force-reload
Listo! ahora todas las peticiones (queries) quedarn almacenadas en el archivo
"/var/log/postgresql/postgresql-8.4-main.log"

También podría gustarte