technique:postgresql

Postgresql

Installation sur ubuntu 20.04

sudo apt install postgresql postgresql-client

Etat du service :

systemctl status postgresql.service

Configuration générale

/etc/postgresql/12/main/postgresql.conf

Mot de passe admin :

sudo su - postgres
psql -c "alter user postgres with password 'monmot2passe'"

Ou passer en commande SQL avec :

psql

Voir les bases installées :

sudo -u postgres psql -l

Et d'une manière générale :

sudo -u postgres -c 'commande_sql'

Export de base :

pg_dump -U username dbname> dbexport.pgsql

pg_dump -U db_user -W -F t db_name> /path/to/your/file/dump_name.tar

Import de base :

psql -U username dbname <dbexport.pgsql

Restorer un dump :

pg_restore -d db_name /path/to/your/file/dump_name.tar -c -U db_user

Effacer une base :

psql -c 'drop database cemea'

Pour Base Graf ( cemea.sqlfc dans /var/lib/postgresql/ ) depuis le compte postgres (basse cemea à créer) :

psql -c 'create database cemea'
pg_restore -d cemea cemea.sqlfc -c -U postgres;
psql  mabase

Et les raccourcis

\l = liste des bases
\d = liste des tables
\q = quitter
\h = aide
USE labase = pour se connecter sur la base
\c labase = pour se connecter sur la base
\dt = voir les tables de la base # \dt+ : pour plus d'infos.

Structure d'une table et données

\d+ nomdetable

Consulter des données avec des requêtes SQL classiques :

SELECT * from table

UDPATE table SET champ1 = valeur1, champ2 = valeur2 WHERE condition;

Pour voir tous les utilisateurs:

select * from user;

Créer une base de données (pour Graf) :

create database cemea;
psql

\c mabasecemea;

Compter des champs :

select count(*) from cemea_course;

La base de données doit être conforme à celle-ci :

psql -c 'create database cemea'
psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 cemea     | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 |

Or sur une Debian 10, l'import brut comporte ce type de base :

psql -l
                              List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 cemea     | postgres | SQL_ASCII | C       | C     |

L'encodage C pose des problèmes à l'import comme :
pg_restore: error: COPY failed for table “account_invoice_line”: ERROR: value too long for type character varying(255)
CONTEXT: COPY account_invoice_line, line 82441, column product_name: “Actions de formations dans le prolongement du séminaire national Ceméa du 3 au

5 février 2020 : …”

La solution

dpkg-reconfigure locales

Et choisir fr_FR.UTF-8

Puis :

psql -c "create database cemea WITH OWNER "postgres" ENCODING 'UTF8' LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' template = 'template0';"
CREATE DATABASE
postgres@postgresql:~$ psql -l
                                  Liste des bases de données
    Nom    | Propriétaire | Encodage  | Collationnement | Type caract. |    Droits d'accès
-----------+--------------+-----------+-----------------+--------------+-----------------------
 cemea     | postgres     | UTF8      | fr_FR.UTF-8     | fr_FR.UTF-8  |
  • technique/postgresql.txt
  • Dernière modification: 2021/05/18 23:51
  • de francoisa