Entrar al usuario postgres
administrador@servidorlibsur:~$ sudo su postgres
Iniciar la base de datos en slackware en caso de un apagon brusco
/usr/bin/pg_ctl -D /var/lib/pgsql/data/ -l /tmp/pgsql.log start
Entrar en el prompt de posgres con el comando psql
Crear la base de datos
postgres=# create database db_flds_prueba;
CAMBIAR ENCODING DE UTF-8 A LATIN1
postgres=# update pg_database set encoding=8 where datname='db_flds_prueba';
Eliminar la base de datos
postgres=# drop database db_flds_prueba;
Cambiar contraseña del usuario postgres
postgres=# ALTER USER postgres WITH PASSWORD 'nuevaclave';
Otros comandos en el prompt de postgres
1. Listar las bases de datos del servidor
\l
2. Listar las tablas de la base de datos seleccionada
\dt
3. Seleccionar una base de datos
The syntax for doing this: \c <database_name>. Suppose, you want to switch to a
database named datacamp_tutorials you can do so like the following -
\c nombre_de_la_base_de_datos
4. Describir una tabla en particular
\d <nombre_de_la_tabla>
5. Mostrar la version de ppostgres que se esta usando
SELECT version(); lets you do this -
6. Ver el historial de comandos
\s
7. Listar todos los comandos disponibles
\? comando
8. Limpiar la pantalla
\! clear
9. Salir del prompt de postgres
\q
Cargar la base de datos
En Debian 5:
psql -d db_flds_2014 -f /home/postgres/db_fdls_2014_20140427.sql
En slackware 13.07:
psql -U postgres -d db_flds_prueba -f /home/postgres/db_flds_2019_2019_09_17.sql
Respaldar la base de datos
En Debian 5:
pg_dump -d db_flds_2014 -f /home/postgres/db_fdls_2014_20140427.sql
En slackware 13.07:
pg_dump -v -O -h 127.0.0.1 -U postgres -W db_flds_2019 >
/home/postgres/db_flds_2019_2019_10_06.sql
Mostrar el tamaño de las base de datos en el servidor:
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
Mostrar la cantidad de columnas de una tabla
select count(*) from information_schema.columns where table_name='sigesp_empresa';
Listar todas las tablas ordenadas por el número de registros:
select n.nspname as table_schema,
       c.relname as table_name,
       c.reltuples as rows
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where c.relkind = 'r'
      and n.nspname not in ('information_schema','pg_catalog')
order by c.reltuples desc;
Manejo de claves foraneas
Listar todas las claves foraneas en la base de datos (Directamente en la base de
datos usando un comando sql):
SELECT
     tc.table_schema,
     tc.constraint_name,
     tc.table_name,
     kcu.column_name,
     ccu.table_schema AS foreign_table_schema,
     ccu.table_name AS foreign_table_name,
     ccu.column_name AS foreign_column_name
FROM
     information_schema.table_constraints AS tc
     JOIN information_schema.key_column_usage AS kcu
       ON tc.constraint_name = kcu.constraint_name
       AND tc.table_schema = kcu.table_schema
     JOIN information_schema.constraint_column_usage AS ccu
       ON ccu.constraint_name = tc.constraint_name
       AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY' order by table_name;
Con una sentencia de Bash script hallar las claves foraneas en un respaldo del
sigesp
root@emilio-desktop:/home/emilio# cat /home/postgres/db_flds_2019_2019_03_17.sql |
grep -B 1 "ADD CONSTRAINT fk_siv_" |grep -v "\--"
root@emilio-desktop:/home/emilio# cat /home/postgres/db_flds_2019_2019_03_17.sql |
grep -B 1 "REFERENCES siv_" |grep -v "\--"
Desactivar una clave foranea (Ejemplo)
ALTER TABLE ONLY siv_articuloalmacen DROP CONSTRAINT
fk_siv_arti_siv_artic_siv_arti;
Reactivar una clave foranea
ALTER TABLE ONLY siv_articuloalmacen
    ADD CONSTRAINT fk_siv_arti_siv_artic_siv_arti FOREIGN KEY (codemp, codart)
REFERENCES siv_articulo(codemp, codart) ON UPDATE RESTRICT ON DELETE RESTRICT;