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 05/10/2022 14:39:37

Yas
Membre

Migration

Bonjour je suis en train de faire la migration de Oracle 11g  vers PostgrSql 14, il y a des requête qui ne marche pas vu la syntaxe est différentes entre les SGBD.

Ma requête sur oracle est la suivante :

SELECT DISTINCT MAX(LEVEL) AS LVL, DEP.NAME, DEP.TYPE FROM USER_DEPENDENCIES DEP  CONNECT BY NOCYCLE PRIOR NAME = REFERENCED_NAME
AND PRIOR TYPE = REFERENCED_TYPE START WITH REFERENCED_TYPE = 'SEQUENCE'
AND REFERENCED_NAME IN ('SEQ_ID_HABILITATION') GROUP BY DEP.NAME, DEP.TYPE ORDER BY MAX(LEVEL) ASC;

Sous Postgre j'ai essayé cette requête :

SELECT DISTINCT MAX(LEVEL) AS LVL, DEP.NAME, DEP.TYPE FROM USER_DEPENDENCIES DEP Where NAME = REFERENCED_NAME
AND TYPE = REFERENCED_TYPE AND REFERENCED_TYPE = 'SEQUENCE'

cela ne fonctionne pas car dans le message d'erreur il ne reconnait pas " USER_DEPENDENCIES"

Merci pour vos réponses .

Hors ligne

#2 05/10/2022 16:07:12

rjuju
Administrateur

Re : Migration

Bonjour,

la syntaxe CONNECT BY n'est pas reconnue sous postgres.  Il faut utiliser la syntaxe de CTE récursive, voir https://www.postgresql.org/docs/14/quer … -RECURSIVE.

Hors ligne

#3 05/10/2022 23:56:17

Yas
Membre

Re : Migration

Je vous remercie pour votre réponse.

Mais la requête que j'ai utilisé sur postgre ne contient pas de Connect BY

SELECT DISTINCT MAX(LEVEL) AS LVL, DEP.NAME, DEP.TYPE FROM USER_DEPENDENCIES DEP Where NAME = REFERENCED_NAME
AND TYPE = REFERENCED_TYPE AND REFERENCED_TYPE = 'SEQUENCE'

Et il ne reconnait pas USER_DEPENDECIES !!

Hors ligne

#4 06/10/2022 05:24:26

rjuju
Administrateur

Re : Migration

USER_DEPENDENCIES est apparemment un catalogue spécifique à oracle.  D'après https://docs.oracle.com/en/database/ora … 2A2F4334F6

USER_DEPENDENCIES describes dependencies between procedures, packages, functions, package bodies, and triggers owned by the current user, including dependencies on views created without any database links


J'imagine que l'équivalent sur postgres serait pg_depend : https://www.postgresql.org/docs/current … epend.html


Quelle information cherchez-vous à récupérer exactement ?

Hors ligne

#5 06/10/2022 10:01:04

Yas
Membre

Re : Migration

Oui j'avais trouver le pg_depend mais il ne décrit pas les relations entre les objets dans le schéma d'utilisateur en cours et c'est ça que j'essaie de retourner car :

Sous Oracle : USER_DEPENDENCIES décrit les dépendances entre les objets dans le schéma utilisateur courant.

Hors sous Postgre : Pg_Depend   ne retour que les id

Hors ligne

#6 06/10/2022 10:12:03

rjuju
Administrateur

Re : Migration

Malheureusement, "schéma utilisateur en cours" n'a pas vraiment de signification pour postgres donc je ne sais toujours pas ce que vous cherchez à faire.


pg_depend ne retourne que des identifiants effectivement, mais vous pouvez soit utiliser pg_describe_object (https://www.postgresql.org/docs/current/functions-info.html ) soit joindre pg_depend aux catalogues voulus pour retrouver le nom correspondant.

Hors ligne

Pied de page des forums