technique:postgresql

Ceci est une ancienne révision du document !


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

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

<da-code> \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 </da-code>

Pour voir tous les utilisateurs:

<da-code> select * from user; </da-code>

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.1616530606.txt.gz
  • Dernière modification : 2021/03/23 21:16
  • de francoisa