technique:postgresql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:postgresql [2021/02/23 20:10] – créée francoisatechnique:postgresql [2023/02/10 22:05] francoisa
Ligne 28: Ligne 28:
  
 </code> </code>
 +
 <code> <code>
 psql -c "alter user postgres with password 'monmot2passe'" psql -c "alter user postgres with password 'monmot2passe'"
Ligne 36: Ligne 37:
  
 <code> <code>
-pgsql+psql
  
 </code> </code>
Ligne 50: Ligne 51:
  
 <code> <code>
-sudo -u postgres commande_sql+sudo -u postgres -c 'commande_sql'
  
 </code> </code>
 +
 +===== Commandes depuis le compte utilisateur postgres =====
  
 Export de base : Export de base :
Ligne 76: Ligne 79:
  
 </code> </code>
 +
 +Effacer une base :
 +
 +<code>
 +psql -c 'drop database cemea'
 +
 +</code>
 +
 +Pour Base Graf ( cemea.sqlfc dans /var/lib/postgresql/ ) depuis le compte postgres (basse cemea à créer) :
 +
 +<code>
 +psql -c 'create database cemea'
 +pg_restore -d cemea cemea.sqlfc -c -U postgres;
 +
 +</code>
 +
 +===== Commandes de base de psql =====
 +
 +<code>
 +psql  mabase
 +
 +</code>
 +
 +Et les raccourcis
 +
 +<code>
 +\l = liste des bases
 +\d = liste des tables
 +\q = quitter
 +\h = aide
 +\c labase = pour se connecter sur la base
 +\dt = voir les tables de la base # \dt+ : pour plus d'infos.
 +
 +</code>
 +
 +Structure ou schema d'une table et données
 +
 +<code>
 +\d+ nomdetable
 +
 +</code>
 +
 +Consulter des données avec des requêtes SQL classiques :
 +
 +<code>
 +SELECT * from table
 +
 +UDPATE table SET champ1 = valeur1, champ2 = valeur2 WHERE condition;
 +
 +</code>
 +
 +Pour voir tous les utilisateurs:
 +
 +<code>
 +select * from user;
 +
 +</code>
 +
 +Créer une base de données (pour Graf) :
 +
 +<code>
 +create database cemea;
 +
 +</code>
 +
 +==== Se connecter à une base ====
 +
 +<code>
 +psql
 +
 +\c mabasecemea;
 +
 +</code>
 +
 +Compter des champs :
 +
 +<code>
 +select count(*) from cemea_course;
 +
 +</code>
 +
 +==== Bug import Base SQL de Graf ====
 +
 +La base de données doit être conforme à celle-ci :
 +
 +<code>
 +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 |
 +
 +</code>
 +
 +Or sur une Debian 10, l'import brut comporte ce type de base :
 +<code>
 +
 +psql -l
 +                              List of databases
 +   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
 +-----------+----------+-----------+---------+-------+-----------------------
 + cemea     | postgres | SQL_ASCII | C       | C     |
 +
 +</code>
 +
 +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 ===
 +<code>
 +
 +dpkg-reconfigure locales
 +
 +</code>
 +
 +Et choisir fr_FR.UTF-8
 +
 +Puis :
 +
 +<code>
 +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  |
 +
 +</code>
 +
 +==== Création de compte user et database associée ====
 +
 +Se connecter à postgresql :
 +<code>
 +
 +sudo -u postgres psql
 +
 +</code>
 +<code>
 +create database lufi;
 +
 +create user lufi with encrypted password 'Mot2passe';
 +
 +grant all privileges on database lufi to lufi;
 +
 +</code>
 +
 +=== Transfert de SQLite vers postgreSQL ===
 +
 +Installation de postgresql et de pgloader ([[https://pgloader.readthedocs.io/en/latest/ref/sqlite.html|https://pgloader.readthedocs.io/en/latest/ref/sqlite.html]])
 +
 +apt install pgloader '' pgloader sqlite:///path/to/file.db pgsql://pguser:motdepasse@locahost/dbname ''
 +
 +Mais pour Lufi, ça ne se passe pas bien, même si la migration a l'air correcte.
 +
  
  • technique/postgresql.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1