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

#1 19/09/2019 12:27:46

tbeghain
Membre

Conversion de script SQL*Plus Oracle vers Postgres

Bonjour,

J'ai des fichiers .sql qui tournent sur Oracle et qu'on me demande de transformer de façon à les utiliser avec une base PostgreSQL
En entête de ces fichiers, il y a tout un paramétrage apparemment propre à Oracle :

SET VERIFY OFF FEEDBACK OFF TERMOUT OFF ECHO OFF LINESIZE 600 PAGESIZE 0
SET EMBEDDED OFF HEADING OFF
SET TERMOUT ON
 
WHENEVER SQLERROR EXIT 1
WHENEVER OSERROR  EXIT 2

J'aimerais savoir si, avec Postgres, il existe des paramètres équivalents, et si oui, où les trouver.

Merci pour vos réponses

Hors ligne

#2 20/09/2019 08:11:04

Marc Cousin
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

Tout ça est dans la doc de psql... https://www.postgresql.org/docs/current/app-psql.html

Je ne me rappelle plus de ce à quoi correspondent tous ces paramètres, mais une bonne partie a des équivalents...

Par exemple,WHENEVER SQLERROR EXIT 1 correspond à \set ON_ERROR_STOP on, HEADING OFF à \pset tuples only, PAGESIZE 0 doit correspondre à \pset pager off
Vous n'aurez je pense pas à toucher à LINESIZE (psql ne tronque pas les enregistrements par défaut). Pour le reste, je ne me souviens plus trop.


Marc.

Hors ligne

#3 20/09/2019 10:49:57

tbeghain
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

Ok, et merci. J'ai effectivement trouvé certains paramètres. Par contre, je me suis aperçu d'un truc. Lorsque j'utilise les commandes \pset directement dans le fichier .sql, après exécution, systématiquement, en entête j'ai les infos concernant mes deux commandes pset. Par exemple, si je mets

\pset tuples_only
\pset format unaligned

J'ai, en sortie, avant l'affichage des données, les deux lignes

 
L'affichage des tuples seuls est désactivé.
Le format de sortie est unaligned.
mes données resultat du SQL
MU,URT

Il y a moyen de les enlever ? On doit surement pouvoir le faire, mais je n'y suis pas arrivé.
Bon, c'est pas bien grave, parce que si je mets -t et -A après la commande psql (ce qui devrait faire la même chose finalement que \pset dans le .sql) 
j'ai l'affichage de mes données sans les deux lignes.

Thierry

Hors ligne

#4 20/09/2019 11:22:34

Marc Cousin
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

il vous faut

\pset quiet on

au début du script


Marc.

Hors ligne

#5 20/09/2019 11:34:20

tbeghain
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

Bonjour,

Désolé, ça ne fonctionne pas. Voilà le .sql

/*
  commentaire
*/
\pset quiet on
\pset tuples_only
\pset format unaligned

SELECT CHD.CODE_APPLI||':'||
       CHD.CH_DOC_TYPE||':'||
       CHD.ORIGINATOR
from PCMS_CHDOC_DATA CHD
where CHD.ORIGINATOR = :var1
;

et voilà le résultat

psql:tbe.sql:4: \pset : option inconnue : quiet
L'affichage des tuples seuls est activé.
Le format de sortie est unaligned.

psql:tbe.sql:4: \pset : option inconnue : quiet

Hors ligne

#6 20/09/2019 11:38:16

Marc Cousin
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

Oups,

\set QUIET on

Marc.

Hors ligne

#7 20/09/2019 11:56:56

tbeghain
Membre

Re : Conversion de script SQL*Plus Oracle vers Postgres

oui, ça marche beaucoup mieux. Merci

Hors ligne

Pied de page des forums