Herramientas de usuario

Herramientas del sitio


wiki2:postgresql

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
wiki2:postgresql [2018/07/24 09:07]
alfred [Basics]
wiki2:postgresql [2020/05/09 09:25] (actual)
Línea 2: Línea 2:
  
 ===== Basics ===== ===== Basics =====
 +''​\q''​ exit.
 +
 +Know the postgresql version: ''​SELECT version();''​
 +
 +To explore the server:
 +  * ''​\list''​ or ''​\l'':​ list all databases
 +  * ''​\dt'':​ list all tables in the current database
 +  * ''​\connect database_name''​ to switch database
 +
 +To access to a recently installed postgres server:
 +<​code>​
 +su - postgres
 +pgsql
 +</​code>​
 +
 +To add a password: ''​\password''​
 +
 +==== Command-line utils ====
 ''​psql -U postgres''​ enter into console with user postgres. ​ ''​psql -U postgres''​ enter into console with user postgres. ​
  
 ''​psql -U postgres -h 127.0.0.1''​ for doing by TCP. ''​psql -U postgres -h 127.0.0.1''​ for doing by TCP.
  
-''​\q'' ​exit.+''​export PGPASSWORD=mysecretpassword && psql -h 127.0.0.1 -U postgres'' ​using a password.
  
 +<​code>​
 +$ export PGPASSWORD=mysecretpassword && dropdb -h 127.0.0.1 -U postgres fok
 +$ export PGPASSWORD=mysecretpassword && createdb -T template0 -h 127.0.0.1 -U postgres fok
 +</​code>​
 ==== Create schema ==== ==== Create schema ====
 <​code>​ <​code>​
Línea 52: Línea 74:
 </​code>​ </​code>​
  
 +===== JSONB =====
 +You can create a table with json data:
 +<​code>​
 +create table macarrodes.bookmarks (
 +  id serial primary key,
 +  title text,
 +  meta jsonb
 +);
 +</​code>​
 +
 +==== Query ====
 +Simple query showing a field:
 +<​code>​
 +select distinct meta->'​tags'​ from macarrodes.macarrodes.bookmarks;​
 +</​code>​
 +
 +Query by field:
 +<​code>​
 +SELECT * FROM users WHERE metadata @> '​{"​country":​ "​Peru"​}'; ​
 +SELECT * FROM users WHERE metadata->>'​country'​ = '​Peru';​
 +</​code>​
 +
 +Query nested values:
 +<​code>​
 +SELECT * FROM users WHERE metadata->'​company'​->>'​name'​ = "​Mozilla";​
 +SELECT * FROM users WHERE metadata @> '​{"​company":​{"​name":​ "​Mozilla"​}}';​
 +</​code>​
 +
 +Query if exists:
 +<​code>​
 +SELECT * FROM users WHERE metadata->>'​country'​ IS NOT NULL;
 +</​code>​
 +
 +Query in array:
 +<​code>​
 +SELECT * FROM users WHERE metadata @> '​{"​companies":​ ["​Mozilla"​]}';​
 +SELECT * FROM users WHERE metadata->>'​countries'​ IN ('​Chad',​ '​Japan'​);​
 +</​code>​
 +
 +Remove an attribute:
 +<​code>​
 +UPDATE users SET metadata = metadata - '​country';​
 +</​code>​
 ===== Funciones ===== ===== Funciones =====
  
Línea 116: Línea 181:
     ...     ...
 </​code>​ </​code>​
-''​ROW(t_bookmarks.folder,​ t_folders.name)::​inner_value''​ crea un objeto ''​inner_value''​. ​+''​ROW(t_bookmarks.folder,​ t_folders.name)::​inner_value''​ crea un objeto ​''​inner_value''​. ​ Se ha de definir antes el tipo ''​inner_value''​.
  
 ''​array(...)''​ crea un array de ''​inner_value''​s. ''​array(...)''​ crea un array de ''​inner_value''​s.
Línea 129: Línea 194:
     ) emps     ) emps
 from dep from dep
 +</​code>​
 +
 +===== Notes =====
 +
 +==== Backups and tools ====
 +
 +There is a command to create a DB:
 +<​code>​
 +createdb -T template0 restored_database
 +</​code>​
 +
 +To create a backup:
 +<​code>​
 +pg_dump postgres > postgres_db.bak
 +</​code>​
 +
 +To restore a backup:
 +<​code>​
 +createdb -T template0 restored_database
 +psql restored_database < database.bak
 +</​code>​
 +
 +Backup and restore all DB:
 +<​code>​
 +pg_dumpall > backup_file
 +</​code>​
 +You can restore the databases by passing the file to psql, with the default database:
 +<​code>​
 +psql -f backup_file postgres
 +</​code>​
 +==== Tips and Tricks ====
 +Script for restart and adding data using docker.
 +<​code>​
 +docker stop `cat last_docker_id.txt`
 +docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres:​9.4 > last_docker_id.txt
 +sleep 6
 +export PGPASSWORD=mysecretpassword ​
 +psql -h 127.0.0.1 -U postgres -f /​home/​alfred/​Workspaces/​macarrodes/​pgsql/​schema.pgsql
 +psql -h 127.0.0.1 -U postgres -f /​home/​alfred/​Workspaces/​macarrodes/​pgsql/​fake_data.pgsql
 +</​code>​
 +
 +=== Launch a command on CLI ===
 +<​code>​
 +export PGPASSWORD=mysecretpassword && psql -h 127.0.0.1 -p {db.local_port} -U postgres -c '​create database puma;'
 +</​code>​
 +==== Instalar servidor ====
 +<​code>​
 +apt-get install postgresql postgresql-contrib
 +# Crear un cluster para 9.3
 +pg_createcluster 9.3 main --start
 +# Crear servicio
 +update-rc.d postgresql enable
 +# Activar servicio
 +service postgresql start
 +# Conecta correctamente?​
 +su postgres
 +psql
 +\q
 +# Ctrl+d
 +</​code>​
 +Para permitir otras conexiones locales campiaremos
 +<​code>​
 +local   ​all ​            ​postgres ​                               peer
 +</​code>​
 +Por:
 +<​code>​
 +local   ​all ​            ​postgres ​                               md5
 </​code>​ </​code>​
wiki2/postgresql.1532423238.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)