PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » résultat requête vers noms de colonnes » 16/09/2021 17:12:58

oui finalement autant reformater les tables.
merci en tout cas

#2 Re : PL/pgSQL » résultat requête vers noms de colonnes » 15/09/2021 19:32:52

gleu a écrit :

Vous ne pourrez pas avec une simple requête SQL. Il vous faut soit un programme externe soit une fonction stockée.

ok pour la fonction mais avez vous une idée de la forme qu'elle doit prendre?

#3 PL/pgSQL » résultat requête vers noms de colonnes » 15/09/2021 15:27:47

Rizcola62
Réponses : 4

Bonjour ,
Je souhaite réaliser la fonction suivante:
table 1           table 2         
ctxt|biotypo    esp|b1|b2.5|b3
1| b1              AA|1|null|1
2| b2.5           AB|4|2|null
3| b3              AC|null|null|3


Résultat attendu:
ctxt|esp|bio
1|AA|1
1|AB|4     
2|AB|2     
3|AA|1
3|AC|3
L'idée du coup serait de passer en variable le résultat de la requête de la tab 1 afin de sélectionner la colonne adéquate.
Avez vous des pistes?

#4 Re : Général » Colate avec utf8 » 03/07/2021 15:34:07

dverite a écrit :

Il faut créer soi-même ce type de collations. Avec Postgres 12 au minimum et compilé avec ICU, il faudrait faire:

CREATE COLLATION  French_CI_AI (
  provider = 'icu',
  locale = 'fr@colStrength=primary', 
  deterministic = false
);

ok merci beaucoup
je me permet de renvoyer vers votre article
http://blog-postgresql.verite.pro/2019/ … istes.html

#5 Général » Colate avec utf8 » 02/07/2021 12:38:28

Rizcola62
Réponses : 2

Bonjour,
Après quelques recherche, il n'y a pas grand chose sur la fonction collate permettant de rendre utf8 insensible à la casse.
SELECT 'Courléon' COLLATE French_CI_AI;
French_CI_AI vient de sql serveur et j'ai le message suivant (le collationnement « french_ci_ai » pour l'encodage « UTF8 » n'existe pas)

Avez vous quelques pistes?
merci

#6 Général » historique des modifications » 09/06/2021 11:14:08

Rizcola62
Réponses : 4

[PG13]
Bonjour
Je souhaiterai avoir dans une table les modifications d'une bdd.
j'ai besoin des colonnes suivantes : utilisateur, date, heure, type[INSERT, UPDATE,DELETE],schéma, table.
Je peux bien sur faire un trigger et l'appeler pour chaque table.
mais est ce qu'il y a pas plus simple, j'ai un peu regarder parmi les extensions mais je m'y perd un peu.
Avez vous des tuyaux?

#7 pgAdmin4 » pg_service.conf shell » 24/04/2021 22:35:24

Rizcola62
Réponses : 1

bonjour,
j'ai 2 instances qui pointent sur la même base de donnée.
distant:
host = 98.***.**.*
port = 5532
db = test;

réseau local
host = 193.***.**.*
port = 5532
db = test;

la question est de savoir si il est possible de modifier le fichier pg_service.conf, le host en l'occurrence, en fonction de l'adresse ip que j'utilise.
lorsque je me connecte au réseau local et qu'il détecte le premier octet "193"cela change l'host de l'instance.
du coup j'ai plus qu'une instance qui change d'host en fonction de là ou je suis.
est ce possible via un shell?
si vous avez d'autre tuyaux, je suis preneur.

#8 Re : Général » développement local et mise en service » 20/04/2021 15:01:34

oui merci je comprends.
une autre petite question,
Du coup sur mon client pgadmin j'ai deux serveurs pointant sur la même base de donnée. un serveur (local) sur le réseau local lorsque je suis connecté (à mon bureau)  et l'autre (distant) lorsque je suis en télétravail.
Est ce qu'un tunnel SSH (le NAS dispose d'un serveur SSH) est recommandé ? est ce vraiment utile?

#9 Re : Général » développement local et mise en service » 15/04/2021 11:23:02

ok la méthode est bien je fais un pg_dump sur la bdd en local et un restore sur la bdd serveur.
Peut être que je dois cibler les tables /vues modifiées ou crées et uniquement restaurer celles ci?

#10 Re : Général » développement local et mise en service » 15/04/2021 11:04:51

rjuju a écrit :

Comment comptez-vous déployer votre DDL une fois le travail terminé ?

je souhaite pouvoir avoir des versions de ma base de données pour que en parallèle je puisse travailler sur celle en développement.
Que voulez vous dire?

#11 Général » développement local et mise en service » 15/04/2021 10:36:16

Rizcola62
Réponses : 7

Bonjour,
actuellement je développe une base de donnée en local, cependant l'objectif à terme est de la migrer sur le serveur de l'entreprise.
Est ce que je dois créer une réplication streaming sur le serveur de l'entreprise?
L'idée est que les collègues puisse travailler sur les dernières versions de tables/vues pas sur celles ou je suis en cours de modification.
Et puis je me vois pas faire un restore à chaque fois.
avez vous des "bonnes pratiques" dans ce cas?

#12 Re : Général » trigger erreur insert types de données » 30/03/2021 10:43:47

rjuju a écrit :

Je ne suis pas certain de comprendre pourquoi la modification du script python est trop compliquée.  Vous avez à un endroit une comande générant INSERT INTO emp_aappma (emp,id_aappma) VALUES (false, 'Ablette').  Il suffit de changer par un INSERT INTO ... SELECT ... FROM .... JOIN...  Cela ne devrait absolument pas changer le reste du script?

Oui effectivement.
mais je vais rester sur une table  permettant l'import de csv brut et grâce aux triggers manipuler la donnée et l'envoyer dans les tables adéquates.
Merci pour votre aide cool

#13 Re : Général » trigger erreur insert types de données » 27/03/2021 14:24:47

Pourquoi ne pas corriger le script python afin qu'il génère une requête SQL valide faisant la correspondance entre votre "aappma" et son identifiant ?

oui effectivement mais dans mon cas c'est trop compliqué (j'exploite les données issue de formulaires PDF)

ok l'import de csv permet il l'action d'un trigger? du type UPDATE ou INSERT?

#14 Re : Général » trigger erreur insert types de données » 27/03/2021 01:47:24

gleu a écrit :

Mon idée, c'est qu'il faut mieux expliquer votre problème parce que ça ne veut absolument rien dire. "Envoyer la chaîne" n'a aucun sens en SQL. Insérer une chaîne dans un champ de type integer est impossible, et il est impossible de détourner ça en SQL pour faire autre chose. À la rigueur, c'est possible dans une routine (par exemple en PL/pgsql) mais c'est le seul contournement possible.

Bref, expliquer mieux ce que vous voulez faire parce que c'est vraiment pas clair.

oui pas de problème,
TABLE aappma
id, aappma
1, Ablette
INSERT INTO emp_aappma (emp,id_aappma) VALUES (false, 'Ablette') => cette commande vient d'un script python via psycopg2 moulinant un csv (infos saisie par utilisateurs)
Déclenchement du TRIGGER
ce que je veux obtenir:
TABLE emp_aappma
emp, id_aappma
false,1


Faire une vue qui a un id_aappma text ; et un trigger INSTEAD OF INSERT  ?

je comprend l'idée mais je ne vois pas très bien la démarche.

#15 Général » trigger erreur insert types de données » 26/03/2021 21:12:50

Rizcola62
Réponses : 8
CREATE TABLE aappma
(
    id smallint,
    geom geometry(MultiPolygon,2154),
    aappma character varying(254),
    nom character varying(254)
)
CREATE TABLE emp_aappma
(
    id_emp bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( CYCLE INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
    emp boolean NOT NULL,
    id_aappma smallint,
)
CREATE OR REPLACE FUNCTION id_aappma() RETURNS trigger AS $emp_id_aappma$
    BEGIN
	NEW.id_aappma = (select id from aappma where aappma = NEW.id_aappma);
    END;
$emp_id_aappma$ LANGUAGE plpgsql;
CREATE TRIGGER id_aappma BEFORE INSERT OR UPDATE ON emp_aappma
    FOR EACH ROW EXECUTE FUNCTION id_aappma();
INSERT INTO emp_aappma (emp,id_aappma) VALUES (false, 'Ablette')
ERREUR : ERREUR:  syntaxe en entrée invalide pour le type smallint : « Ablette »

voilà le but est lorsque j'envoie la chaine 'Ablette' le déclencheur retourne l'id associé via un select sur une autre table
cependant insérer une valeur de type chaine dans un champ type integer, c'est pas top.
comment contourner ce problème?
avez vous des idées?

#17 Re : Général » gestiin role postgres » 24/03/2021 17:08:32

sur mon NAS, j'utilise docker avec une sauvegarde automatique via cron schedule qui utilise l'utilisateur postgres.
je voudrais empêcher un client du réseau de remonter au serveur en utilisant l'utilisateur postgres.
les utilisateur utilise QGIS.
C'est pourquoi mon intention de rejeter toutes tentatives via l'utilisateur postgres.
ce rôle postgres se révèlerait être exclusivement dédié à une intervention en local sur le serveur.
j'espère que c'est un peu plus claire.

#18 Re : Général » gestiin role postgres » 24/03/2021 12:09:07

c'est parce que ma base de donnée est sur un NAS.
# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             postgres    127.0.0.1/32     reject
host    all             all             127.0.0.1/32     scram-sha-256
# IPv6 local connections:
host    all          postgres       ::1/128             reject
host    all             all             ::1/128             scram-sha-256

désolé de ne pas être très claire.
si j'ai instauré une règle pour ipv6 je dois la mettre pour ipv4?

#19 Re : Général » gestiin role postgres » 23/03/2021 22:24:40

merci,
voici une config auquel j'ai pensé

# IPv4 local connections:
host    all          all                   127.0.0.1/32     scram-sha-256
# IPv6 local connections:
host    all          postgres          ::1/128             reject
host    all          all                   ::1/128             scram-sha-256

l'idée est de bloquer l'utilisateur postgres uniquement sur une connexion distante.

#20 Re : Général » gestiin role postgres » 20/03/2021 20:44:31

ok merci de la réponse,
je comprend l'idée de restriction des adresses ip avec pg_hba.conf.
Seulement, si j'autorise une adresse ip, je fournie à l'utilisateur son user et password mais si il s'y connait un peu, il peut se connecter en tant que user:postgres et password:postgres .
A moins de changer le password du user postgres?
Je veux juste connaitre les bonne pratiques.
merci d'avance

#21 Général » gestiin role postgres » 19/03/2021 17:14:05

Rizcola62
Réponses : 10

Bonjour,
alors question toute bête. Comment gérer le rôle postgres? est il encore vraiment nécessaire si je supprime la db 'postgres'?
Je veux éviter à ce rôle par défaut qui permet de se connecter et avoir accès aux bdd.

Pied de page des forums

Propulsé par FluxBB