Bases de datosPostgres

Instalación de Postgres en Ubuntu 18.04 LTS

Postgres es una de las bases de datos relacionales más populares del mercado. Es open-source y está totalmente soportada por la comunidad, haciéndola una de las candidatas preferidas por los programadores para desarrollar aplicaciones, pues tiene poco que envidiarle a otras bases de datos que cuestan miles de Euros al año en licencias.

Contenidos

Instalación de Postgres 10

La instalación en Ubuntu no puede ser más sencilla. Un simple comando apt install y tendremos la base de datos instalada como servicio, ejecutándose automáticamente cuando arranquemos nuestro sistema, y con el usuario postgresql creado para empezar a trabajar.

sudo apt install postgresql

Operaciones más comunes con la base de datos

Ver el estado en el que está la base de datos

sudo systemctl status postgresql

Poner la base de datos en marcha

sudo systemctl start postgresql

Parar la base de datos

sudo systemctl stop postgresql

Reiniciar el servicio

sudo systemctl restart postgresql

Recargar la configuración

sudo systemctl reload postgresql

Uso básico de psql

Como acceder a la consola psql

Una de las formas más comunes de trabajar con la base de datos PostgreSQL es desde la consola de comandos.

nociones@nociones:~$ sudo su postgres
postgres@nociones:/home/nociones$ psql
psql (10.2 (Ubuntu 10.2-1))
Type "help" for help.

postgres=#

Ver la lista de comandos de ayuda psql

Sencillamente ponemos una barra invertida y un interrogante

postgres=# \?

Nos mostrará la siguiente lista:

General
\copyright show PostgreSQL usage and distribution terms
\crosstabview [COLUMNS] execute query and display results in crosstab
\errverbose show most recent error message at maximum verbosity
\g [FILE] or ; execute query (and send results to file or |pipe)
\gexec execute query, then execute each value in its result
\gset [PREFIX] execute query and store results in psql variables
\gx [FILE] as \g, but forces expanded output mode
\q quit psql
\watch [SEC] execute query every SEC seconds

Help
\? [commands] show help on backslash commands
\? options show help on psql command-line options
\? variables show help on special variables
\h [NAME] help on syntax of SQL commands, * for all commands

Query Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\ev [VIEWNAME [LINE]] edit view definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\s [FILE] display history or save it to file
\w FILE write query buffer to file

Input/Output
\copy ... perform SQL COPY with data stream to the client host
\echo [STRING] write string to standard output
\i FILE execute commands from file
\ir FILE as \i, but relative to location of current script
\o [FILE] send all query results to file or |pipe
\qecho [STRING] write string to query output stream (see \o)

Conditional
\if EXPR begin conditional block
\elif EXPR alternative within current conditional block
\else final alternative within current conditional block
\endif end conditional block

Informational
(options: S = show system objects, + = additional detail)
\d[S+] list tables, views, and sequences
\d[S+] NAME describe table, view, sequence, or index
\da[S] [PATTERN] list aggregates
\dA[+] [PATTERN] list access methods
\db[+] [PATTERN] list tablespaces
\dc[S+] [PATTERN] list conversions
\dC[+] [PATTERN] list casts

Ver la lista de comandos de ayuda sql

postgres=# \h

Nos mostrará una lista inmensa con muchos comandos familiares para cualquiera que haya trabajado con una base de datos relacional:

Available help:
ABORT ALTER TABLE CREATE FOREIGN TABLE CREATE VIEW DROP SCHEMA PREPARE TRANSACTION
ALTER AGGREGATE ALTER TABLESPACE CREATE FUNCTION DEALLOCATE DROP SEQUENCE REASSIGN OWNED
ALTER COLLATION ALTER TEXT SEARCH CONFIGURATION CREATE GROUP DECLARE DROP SERVER REFRESH MATERIALIZED VIEW
ALTER CONVERSION ALTER TEXT SEARCH DICTIONARY CREATE INDEX DELETE DROP STATISTICS REINDEX
ALTER DATABASE ALTER TEXT SEARCH PARSER CREATE LANGUAGE DISCARD DROP SUBSCRIPTION RELEASE SAVEPOINT
ALTER DEFAULT PRIVILEGES ALTER TEXT SEARCH TEMPLATE CREATE MATERIALIZED VIEW DO DROP TABLE RESET
ALTER DOMAIN ALTER TRIGGER CREATE OPERATOR DROP ACCESS METHOD DROP TABLESPACE REVOKE
ALTER EVENT TRIGGER ALTER TYPE CREATE OPERATOR CLASS DROP AGGREGATE DROP TEXT SEARCH CONFIGURATION ROLLBACK
ALTER EXTENSION ALTER USER CREATE OPERATOR FAMILY DROP CAST DROP TEXT SEARCH DICTIONARY ROLLBACK PREPARED
ALTER FOREIGN DATA WRAPPER ALTER USER MAPPING CREATE POLICY DROP COLLATION DROP TEXT SEARCH PARSER ROLLBACK TO SAVEPOINT
ALTER FOREIGN TABLE ALTER VIEW CREATE PUBLICATION DROP CONVERSION DROP TEXT SEARCH TEMPLATE SAVEPOINT
ALTER FUNCTION ANALYZE CREATE ROLE DROP DATABASE DROP TRANSFORM SECURITY LABEL
ALTER GROUP BEGIN CREATE RULE DROP DOMAIN DROP TRIGGER SELECT
ALTER INDEX CHECKPOINT CREATE SCHEMA DROP EVENT TRIGGER DROP TYPE SELECT INTO
ALTER LANGUAGE CLOSE CREATE SEQUENCE DROP EXTENSION DROP USER SET
ALTER LARGE OBJECT CLUSTER CREATE SERVER DROP FOREIGN DATA WRAPPER DROP USER MAPPING SET CONSTRAINTS
ALTER MATERIALIZED VIEW COMMENT CREATE STATISTICS DROP FOREIGN TABLE DROP VIEW SET ROLE
ALTER OPERATOR COMMIT CREATE SUBSCRIPTION DROP FUNCTION END SET SESSION AUTHORIZATION
ALTER OPERATOR CLASS COMMIT PREPARED CREATE TABLE DROP GROUP EXECUTE SET TRANSACTION
ALTER OPERATOR FAMILY COPY CREATE TABLE AS DROP INDEX EXPLAIN SHOW
ALTER POLICY CREATE ACCESS METHOD CREATE TABLESPACE DROP LANGUAGE FETCH START TRANSACTION
ALTER PUBLICATION CREATE AGGREGATE CREATE TEXT SEARCH CONFIGURATION DROP MATERIALIZED VIEW GRANT TABLE
ALTER ROLE CREATE CAST CREATE TEXT SEARCH DICTIONARY DROP OPERATOR IMPORT FOREIGN SCHEMA TRUNCATE
ALTER RULE CREATE COLLATION CREATE TEXT SEARCH PARSER DROP OPERATOR CLASS INSERT UNLISTEN
ALTER SCHEMA CREATE CONVERSION CREATE TEXT SEARCH TEMPLATE DROP OPERATOR FAMILY LISTEN UPDATE
ALTER SEQUENCE CREATE DATABASE CREATE TRANSFORM DROP OWNED LOAD VACUUM
ALTER SERVER CREATE DOMAIN CREATE TRIGGER DROP POLICY LOCK VALUES
ALTER STATISTICS CREATE EVENT TRIGGER CREATE TYPE DROP PUBLICATION MOVE WITH
ALTER SUBSCRIPTION CREATE EXTENSION CREATE USER DROP ROLE NOTIFY
ALTER SYSTEM CREATE FOREIGN DATA WRAPPER CREATE USER MAPPING DROP RULE PREPARE

Ver la ayuda sobre un comando

postgres=# \help create database

Nos muestra la ayuda de ese comando con la sintaxis de PostgreSQL

Command: CREATE DATABASE
Description: create a new database
Syntax:
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] user_name ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ ALLOW_CONNECTIONS [=] allowconn ]
[ CONNECTION LIMIT [=] connlimit ]
[ IS_TEMPLATE [=] istemplate ] ]

Salir de la interfaz psql

Seguro que has probado con <Ctrl>-<c> y estás a punto de tirar la toalla. Prueba lo siguiente:

postgres=# \q

Ficheros más comunes de Postgres

Te mostramos a continuación la localización de los ficheros más comunes de PostgresSQL en Ubuntu, para que los localices de forma sencilla cuando necesites hacer algún cambio o personalizacion siguiendo un tutorial o la documentación de la base de datos.

Ficheros de configuración

A continuación te mostramos cómo localizar los principales ficheros de nuestra instalación en Postgres. Se muestran las salidas para Ubuntu, pero estos comandos te serán muy útiles si te encuentras en unas instalación de postgres en otra distribución con la que no estés familiarizado.

pg_hba.conf

Este fichero especifica la información de autentificación de hosts (host based authentication), básicamente cómo se va a acceder a tu base de datos y desde donde.

postgres=# show hba_file;
hba_file 
-------------------------------------
/etc/postgresql/10/main/pg_hba.conf

postgresql.conf

Este fichero especifica la configuración principal del servidor

postgres=# show config_file;
config_file 
-----------------------------------------
/etc/postgresql/10/main/postgresql.conf

Ficheros de datos

Este será el directorio que se utilizará para el almacenamiento de datos.

postgres=# show data_directory;
data_directory 
-----------------------------
/var/lib/postgresql/10/main

Fichero de log

El fichero de log se encuentra en el siguiente directorio:

postgres@nociones:/home/nociones$ ls -lha /var/log/postgresql/postgresql-10-main.log 
-rw-r----- 1 postgres adm 1,7K Mär 9 22:47 /var/log/postgresql/postgresql-10-main.log

Límites de PostgreSQL

Te mostramos algunos de los límites de la base de datos Postgres. Como verás, es muy poco probable que los alcances. Son útiles para realizar comparativas con otras bases de datos y para planificar una aplicación.

Límite Valor
Tamaño máximo de la base de datos Ilimitado(!)
Tamaño máximo de una tabla 32 TB
Tamaño máximo de una file 1.6 TB
Tamaño máximo de un campo 1 GB
Número máximo de filas por tabla Ilimitado(!)
Número máximo de columnas por tabla 250 – 1600 dependiendo del tipo de columnas
Número máximo de índices por tabla Ilimitado

Fin

Y de momento eso es todo, ¿Tienes alguna duda que podamos resolver? ¿Echas de menos alguna información? ¡Te esperamos en los comentarios!

(Visto 4.123 vecess, 1 visitas hoy)
¡Comparte este articulo!

2 comentarios en «Instalación de Postgres en Ubuntu 18.04 LTS»

  • Tengo una mala instalación en Ubuntu 18 (no soy experto y estoy experimentando). La cuestión es que me gustaría limpiar la versión que tengo mal instalada y empezar una nueva. Me podéis ayudar?

    SAludos

    Izás

    Respuesta

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *