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 : PSQL » differences sqlplus --> psql » 20/09/2019 15:37:27

Super, c'est carrément mieux ! On englobe le tout, et pis voila !!

SELECT CONCAT(CHD.CODE_APPLI,':',CHD.CH_DOC_TYPE,':',CHD.ORIGINATOR)
from PCMS_CHDOC_DATA CHD
where CHD.ORIGINATOR = :var1
;
ZZ:DM:TBEGHAIN
:EVOLDB:TBEGHAIN
:EVOLDB:TBEGHAIN
MU:URT:TBEGHAIN
:URT:TBEGHAIN
:URT:TBEGHAIN

Par contre, avec concat_ws, j'obtiens ça, et c'est moins bien car les null ne sont pas pris en compte.
Nous avons souvent des fichiers csv comme résultats de requête qui sont exportés dans Excel.
Dans ma requête exemple, avec concat, j'ai bien tous les séparateurs (:), alors que avec concat_ws, ce n'est pas forcément le cas.

ZZ:DM:TBEGHAIN
EVOLDB:TBEGHAIN
EVOLDB:TBEGHAIN
MU:URT:TBEGHAIN
URT:TBEGHAIN
URT:TBEGHAIN

Merci

Thierry

#2 Re : PSQL » differences sqlplus --> psql » 20/09/2019 14:18:41

Pour Guillaume,
Oui, je le sais. Mais de toute façon, il faut que je modifie et teste tous les scripts systématiquement. Alors je verrai bien là où il faut le coalesce ou pas. Sans compter d'autres problèmes que je vais peut être rencontrer....

Pour Marc,
En fait, nous utilisons un progiciel qui utilise ORACLE comme base de données, et qui offre la possibilité de changer la base de données pour Postgres. Du coup, c'est leur procédure qui s'occupe de migrer les données d'un environnement vers un autre, et je ne sais pas quelle technique ils utilisent. Nous, on a développé des scripts autour, et ce sont ces scripts qu'il me faut modifier.

En tous cas, un grand merci à tous les deux

Thierry

#3 Re : PSQL » differences sqlplus --> psql » 20/09/2019 12:21:24

Ah OK. Merci. Effectivement, si je rajoute coalesce, ça marche. Comme je dois migrer vers postgres, ça va m'obliger à revoir pas mal de sql, mais faut ce qu'il faut !

SELECT COALESCE(CHD.CODE_APPLI,' ')||':'||
       CHD.CH_DOC_TYPE||':'||
       CHD.ORIGINATOR
from PCMS_CHDOC_DATA CHD
where CHD.ORIGINATOR = :var1
;

ce qui donne

ZZ:DM:TBEGHAIN
 :EVOLDB:TBEGHAIN
 :EVOLDB:TBEGHAIN
MU:URT:TBEGHAIN
 :URT:TBEGHAIN
 :URT:TBEGHAIN

#5 Re : PSQL » Conversion de script SQL*Plus Oracle vers Postgres » 20/09/2019 11:34:20

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

#6 PSQL » differences sqlplus --> psql » 20/09/2019 11:18:11

tbeghain
Réponses : 7

Bonjour,

Je constate des différences entre une exécution avec sqlplus sur une base ORACLE et psql sur la même base, mais migrée sous Postgres. Voilà l'ordre SQL

SELECT CHD.CODE_APPLI||','||
       CHD.CH_DOC_TYPE||','||
       CHD.ORIGINATOR
from PCMS_CHDOC_DATA CHD
where CHD.ORIGINATOR = 'TBEGHAIN';

et voilà ce que ça donne avec sqlplus :

ZZ,DM,TBEGHAIN
,EVOLDB,TBEGHAIN
,EVOLDB,TBEGHAIN
MU,URT,TBEGHAIN
,URT,TBEGHAIN
,URT,TBEGHAIN

et avec psql

ZZ,DM,TBEGHAIN


MU,URT,TBEGHAIN

en fait, avec psql, comme la valeur de la première colonne est "null", il n''y a pas affichage du reste des colonnes, à la différence de sqlplus.
Est-ce qu'il y aurait un paramètre à positionner avec psql pour avoir le même comportement qu'avec sqlplus ?
Merci pour vos réponses

#7 Re : PSQL » Conversion de script SQL*Plus Oracle vers Postgres » 20/09/2019 10:49:57

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

#8 PSQL » Conversion de script SQL*Plus Oracle vers Postgres » 19/09/2019 12:27:46

tbeghain
Réponses : 6

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

Pied de page des forums

Propulsé par FluxBB