Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
wiki2:postgresql [2018/09/06 16:19] alfred [Objetos anidados con array y row] |
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 132: | Línea 197: | ||
| ===== Notes ===== | ===== 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 ==== | ==== Tips and Tricks ==== | ||
| Script for restart and adding data using docker. | Script for restart and adding data using docker. | ||
| Línea 141: | Línea 233: | ||
| 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/schema.pgsql | ||
| psql -h 127.0.0.1 -U postgres -f /home/alfred/Workspaces/macarrodes/pgsql/fake_data.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> | ||