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 : Autres langages » Cobol et PostgreSQL » 14/10/2022 01:55:18

Bonjour,
Voici quelques souvenirs de l'époque où je m'étais posé quelques questions sur le portage de Pro*Cobol/Oracle vers du Microfocus Cobol/ PostgreSQL. Ceci dit, cela fait déjà quelques années... et les produits ont pu évoluer.
Le compilateur « Visual COBOL » de la société Micro-Focus dispose de plusieurs pré-compilateurs permettant de gérer du « embbeded SQL » dans du code COBOL. C’est le cas du pré-compilateur OpenESQL qui traduit le SQL en appel à la bibliothèque ODBC/JDBC. Le pilote ODBC/JDBC pour PostgreSQL établit la communication avec une base PostgreSQL. (J'avais utilisé ODBC car JDBC est plus contraignant. J'étais aussi sous Linux.)
Malheureusement, le lien sur la documentation d'OpenESQL que j'avais noté semble être obsolète. (http://documentation.microfocus.com/hel … BESQL.html)
Les ordres SQL sont délimités par EXEC SQL et END-EXEC.
A noter que Le préprocesseur OpenESQL est plus strict au niveau de la syntaxe que le pré-compilateur Pro*COBOL. Cela s’explique par le fait que la couche ODBC utilisée par OpenESQL est moins permissive qu’Oracle au niveau de la syntaxe.
OpenESQL a des directives (tracelevel,behaviour et autres ) qui permettent d'influer sur son comportement.
Bref, peut être qu'une recherche Web sur OpenESQL pourrait t'aider. (... https://www.microfocus.com/documentatio … BESQL.html ...)
De plus, il existe peut être d'autres solutions qu'OpenESQL.
Voilà.
Bien cordialement,
Jean-Pierre

#2 Re : Installation » Postgres 10 » 23/08/2017 12:01:43

J'ai crée le bug suivant : 872660  ( https://bugs.debian.org/cgi-bin/bugrepo … bug=872660 )
Statut : en cours, confirmé  ...

A suivre.

Merci.
Bien cordialement,

#3 Re : Installation » Postgres 10 » 12/08/2017 21:27:05

Merci pour cette confirmation rapide.
Bien cordialement,

#4 Installation » Postgres 10 » 11/08/2017 19:50:13

jpcarayo
Réponses : 3

Bonjour,


Version:  PostgreSQL 10beta3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 7.1.0-13) 7.1.0, 64-bit

Je crée un cluster par la commande :

pg_createcluster         \
pg_createcluster         \
    -d /PG_02_01/data       \
    --locale fr_FR.iso885915@euro   \
    --lc-collate C \
    --lc-ctype C   \
    -e LATIN9  \
    10 MONCLUSTER          \
    -- --waldir=/PG_03_01  \
       --data-checksums


Jusque-là tout va bien. Le message suivant est affiché :


Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :

    /usr/lib/postgresql/10/bin/pg_ctl -D /PG_02_01/data -l fichier de trace start

Warning: systemd does not know about the new cluster yet. Operations like "service postgresql start" will not handle it. To fix, run:
  sudo systemctl daemon-reload
Ver Cluster    Port Status Owner    Data directory Log file
10  MONCLUSTER 5432 down   postgres /PG_02_01/data /var/log/postgresql/postgresql-10-MONCLUSTER.log


Par contre, si je fais comme le message me le suggère :

   /usr/lib/postgresql/10/bin/pg_ctl -D /PG_02_01/data start

J'ai le message d'erreur :

en attente du démarrage du serveur....postgres : n'a pas pu accéder au fichier de configuration « /PG_02_01/data/postgresql.conf » : Aucun fichier ou dossier de ce type
attente arrêtée
pg_ctl : n'a pas pu démarrer le serveur
Examinez le journal applicatif.


Ce qui me parait s'expliquer par le fait que sous Debian le fichier postgresql.conf est sous :
:~$ ls /etc/postgresql/10/MONCLUSTER/postgresql.conf
/etc/postgresql/10/MONCLUSTER/postgresql.conf

Mon instance démarre correctement avec :

/usr/lib/postgresql/10/bin/pg_ctl -D /etc/postgresql/10/MONCLUSTER/ start

en attente du démarrage du serveur....2017-08-11 19:34:13.106 CEST [11868] LOG:  en écoute sur IPv6, adresse « ::1 », port 5432
2017-08-11 19:34:13.106 CEST [11868] LOG:  en écoute sur IPv4, adresse « 127.0.0.1 », port 5432
2017-08-11 19:34:13.108 CEST [11868] LOG:  écoute sur la socket Unix « /var/run/postgresql/.s.PGSQL.5432 »
2017-08-11 19:34:13.122 CEST [11869] LOG:  le système de bases de données a été arrêté à 2017-08-11 19:32:16 CEST
2017-08-11 19:34:13.128 CEST [11868] LOG:  le système de bases de données est prêt pour accepter les connexions
effectué
serveur démarré


Ai-je fait une erreur quelque part ? Ou bien, faut-il faire modifier le message affiché par pg_createcluster ?


Merci beaucoup pour votre aide.

#5 Re : ODBC » psqlODBC 09.06.0200 » 05/04/2017 11:11:14

Merci beaucoup pour cette réponse.
Je contacte Devrim.

Bien cordialement,
Jean-Pierre

#6 ODBC » psqlODBC 09.06.0200 » 31/03/2017 15:05:39

jpcarayo
Réponses : 2

Bonjour,

Je cherche à installer la version 09.06.0200 du package psqlODBC sur une Red Hat 6.8.

Malheureusement cette version n'a pas l'air disponible à partir du repository Pgdg

(
Ce package a pu être installé sur une Debian Jessie. # apt-cache madison odbc-postgresql
odbc-postgresql | 1:09.06.0200-1.pgdg80+1 | http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg/main amd64 Packages
)

Savez-vous quand le repository Pgdg sera à jour pour Redhat ? (le package semble aussi être absent pour Redhat 7.) 

Y'a t'il souvent des décalages de ce type ?

Merci beaucoup pour votre aide.

#7 Autres langages » Cobol et PostgreSQL » 19/08/2016 18:53:26

jpcarayo
Réponses : 3

Bonjour,

Je suis à la recherche de retour d'expériences sur l'utilisation de programme Cobol accédant à une base PostgreSQL, le tout s'éxécutant sur une machine Linux. 

- Il ne semble pas exister de pré-compilateur SQL pour Cobol présent dans la distribution PostgreSQL en natif. ( L'équivalent du pre-compilateur PRO*COBOL sous Oracle.)
- Sous   https://github.com/tollofsen/ocesql, on trouve existe un pré-compilateur open source. (Open Cobol ESQL (ocesql) is an open-source Embedded SQL pre-compiler and run-time library designed for COBOL applications which access  an open-source database.) qui semble fonctionner.
- Odbc pourrait également être une piste. voir https://www.postgresql.org/message-id/2 … hus.com.au

Peut être avez-vous trouver d'autres solutions ?

Merci de partager votre expèrience sur ce sujet.

Cordialement,
Jean-Pierre

#8 Re : Installation » Impossible d'installer correctement PostgreSQL » 02/05/2016 12:38:41

Bonjour,

Le mieux, me semble t'il pour obtenir de l'aide serait de créer une nouvelle discussion en donnant plus d'information sur votre souci d'installation.  Pour information, "Aboudra" a résolu son incident en désactivant son antivirus pendant l'installation comme indiqué dans la discussion: http://forums.postgresql.fr/viewtopic.php?id=3797.

Cordialement,
Jean-Pierre

#9 Re : Général » Comment exécuter un code Postgress SQL depuis un script shell Unix ? » 25/04/2016 17:16:49

Bonjour,

Que se passe t'il si vous modifier votre script shell comme suit ?
----------------------
LD_LIBRARY_PATH=/opt/sas/sashome/SASWebInfrastructurePlatformDataServer/9.4/lib
export LD_LIBRARY_PATH
PGPASSWORD=*******
export PGPASSWORD
/opt/sas/sashome/SASWebInfrastructurePlatformDataServer/9.4/bin/psql -U mysuser -h localhost -p 6432 -d myDatabase   <<EOF!
select * from sas_audit;
\q
EOF!
-----------------

( rajout de <<EOF! et EOF! )

Bien cordialement,
Jean-Pierre

#10 Re : Général » connexion serveur impossible » 21/04/2016 14:26:11

Bonjour,

Est il possible de récupérer une trace pour analyser ce qui se passe ? Par exemple, en utilisant pg_trace() ? ( voir http://php.net/manual/fr/function.pg-trace.php  pour plus de détails ) (Je pars du principe que la communication se passe entre du PHP et PostgreSQL à cause de la présence de pg_connect() dans le message d'erreur. Peut-être n'est pas vrai ... )
Il me semble que cela donnerait plus d'information et permettrait peut être de mieux comprendre.

Bien Cordialement,

#12 Re : Général » Deux lignes consécutives avec la même valeur dans un champ » 20/04/2016 00:30:52

Très content si j'ai pu aider.

Si le résultat  doit être uniquement :

id   | typid  |  count
----+-------+--------
  1  |   8     |     3   


"Ma requête" doit  être modifier comme suit :
___________________________________________
SELECT id, typid,count(typid) Nb
FROM ( SELECT t1.id, t1.typid, t1.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
WHERE t3.id IS NULL
UNION
SELECT t1.id, t1.typid, t2.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
WHERE t3.id IS NULL ) AS EventNb
GROUP BY id, typid ;
_________________________________________

La solution de Julien est certainement meilleure du point de vue des performances. Elle est également beaucoup plus concise.

Bon développement.
Bien Cordialement

#13 Re : Général » Deux lignes consécutives avec la même valeur dans un champ » 18/04/2016 23:48:06

Bonjour Martina,

Est que le solution suivante pourrait vous convenir ?


Table test de départ :
======================

postgres=# SELECT * FROM test ;

id | typid |         datid         
----+-------+------------------------
  1 |     3 | 2015-03-01 13:12:21+01
  2 |     7 | 2015-03-01 13:12:21+01
  1 |     5 | 2015-03-01 13:12:27+01  <-
  4 |     4 | 2015-03-01 13:12:56+01  <--
  1 |     5 | 2015-03-01 13:15:27+01  <-
  1 |     8 | 2015-03-01 13:16:21+01  <---
  1 |     8 | 2015-03-01 13:16:22+01  <---
  1 |     8 | 2015-03-01 13:17:21+01  <---
  1 |     5 | 2015-03-01 13:17:27+01
  1 |     3 | 2015-03-01 13:18:21+01
  4 |     4 | 2015-03-01 13:19:56+01  <--
(11 lignes)

Table nb_eventconsecutifs :
==================

postgres=# SELECT * FROM nb_eventconsecutifs  ;

id | nb
----+----
  1 |  5
  4 |  2
(2 lignes)

____________________________________________________

Ce résultat est obtenu grace à l'ordre SQL suivant :

CREATE TABLE nb_eventconsecutifs AS
SELECT id, count(typid) Nb
FROM ( SELECT t1.id, t1.typid, t1.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL
UNION
SELECT t1.id, t1.typid, t2.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL ) AS EventNb
GROUP BY id ;


Je vous laisse le soin de vérifier et de faire plus de tests pour valider (ou non) cette solution.
Je joins mes scripts de tests pour que vous puissiez les reproduire plus facilement si vous le souhaitez :

Creation de la table test:
CREATE TABLE test  AS SELECT 1 id, 2 typid, current_timestamp datid FROM T where 1=0 ;
INSERT INTO test VALUES ( 1,3,'2015-03-01 13:12:21') ;
INSERT INTO test VALUES ( 2,7,'2015-03-01 13:12:21') ;
INSERT INTO test VALUES ( 1,5,'2015-03-01 13:12:27') ;
INSERT INTO test VALUES ( 4,4,'2015-03-01 13:12:56') ;
INSERT INTO test VALUES ( 1,5,'2015-03-01 13:15:27') ;
INSERT INTO test VALUES ( 1,8,'2015-03-01 13:16:21') ;
INSERT INTO test VALUES ( 1,8,'2015-03-01 13:16:22') ;
INSERT INTO test VALUES ( 1,8,'2015-03-01 13:17:21') ;
INSERT INTO test VALUES ( 1,5,'2015-03-01 13:17:27') ;
INSERT INTO test VALUES ( 1,3,'2015-03-01 13:18:21') ;
INSERT INTO test VALUES ( 4,4,'2015-03-01 13:19:56') ;
SELECT * FROM test ;

En procédant par étapes pour essayer d'expliquer :

1- L'ordre SQL suivant permet de retrouver les couples (ID,TYPE ) consécutifs sous la forme ID, TYPE, DATE_DEBUT, DATE_FIN
---------------------------------------------------------------------------------------------------------------------------------------------------

SELECT t1.id, t1.typid, t1.datid, t2.datid,t3.typid, t3.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL
ORDER BY t1.datid ;

id | typid |         datid          |         datid          | typid | datid
----+-------+------------------------+------------------------+-------+-------
  1 |     5 | 2015-03-01 13:12:27+01 | 2015-03-01 13:15:27+01 |       |
  4 |     4 | 2015-03-01 13:12:56+01 | 2015-03-01 13:19:56+01 |       |
  1 |     8 | 2015-03-01 13:16:21+01 | 2015-03-01 13:16:22+01 |       |
  1 |     8 | 2015-03-01 13:16:22+01 | 2015-03-01 13:17:21+01 |       |
(4 lignes)


2 - Pour obtenir la liste de toutes les occurences de couple (ID,TYPE) consécutifs, il faut prendre en compte le début et la fin  :
-----------------------------------------------------------------------------------------------------------------------------------

SELECT t1.id, t1.typid, t1.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL
UNION
SELECT t1.id, t1.typid, t2.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL
ORDER BY 3 ;

id | typid |         datid         
----+-------+------------------------
  1 |     5 | 2015-03-01 13:12:27+01
  4 |     4 | 2015-03-01 13:12:56+01
  1 |     5 | 2015-03-01 13:15:27+01
  1 |     8 | 2015-03-01 13:16:21+01
  1 |     8 | 2015-03-01 13:16:22+01
  1 |     8 | 2015-03-01 13:17:21+01
  4 |     4 | 2015-03-01 13:19:56+01
(7 lignes)


3 - Une fois obtenue la liste précedente, il faut compter le nombre de TYPE par ID :
------------------------------------------------------------------------------------

SELECT id, count(typid) Nb
FROM ( SELECT t1.id, t1.typid, t1.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL
UNION
SELECT t1.id, t1.typid, t2.datid
  FROM ( test t1 INNER JOIN test t2 ON  t1.id = t2.id
                                         and  t1.typid = t2.typid
                                         and  t1.datid < t2.datid )
       LEFT JOIN test t3 ON  t3.datid > t1.datid and t3.datid < t2.datid
                         and t1.id = t3.id
WHERE t3.id IS NULL ) AS EventNb
GROUP BY id ;

id | nb
----+----
  1 |  5
  4 |  2
(2 lignes)


Voilà, j'espère que cela sera utile.
Cordialement,

#15 Re : Installation » Problème d'installation postgres » 12/04/2016 12:17:47

Bonjour,

Pour votre installation :
Quel est le type de machine 32bits, 64bits ? ( Je suppose que le processeur est de la famille intel, x86 ou x64 )
Quelle version de Windows utilisez-vous  ? (7,8,10, 32 bits, 64 bits)
A partir de quel lien avez-vous récupéré la version 9.5.2 de PostgreSQL ?  Essayez-vous d'installer la version 32bits ou 64bits ?

En fonction de vos réponses, j'essaierai de faire l'installation et donc de reproduire l'incident, si j'arrive à avoir accès une configuration équivalente.

Bien cordialement,

#16 Re : Installation » Problème d'installation postgres » 12/04/2016 00:41:42

Bonjour,

Avez-vous essayer de mettre en oeuvre la solution décrite pour un incident similaire  sous http://www.postgresqltutorial.com/install-postgresql/ ?  à savoir :


<<<-----
Si vous rencontrez le message d'erreur suivant pendant l'installation de PostgreSQL sous Windows (Windows 8 ou Windows 10):

" Echec lors du chargement des modules SQL dans le cluster de bases de données"

et que le message  suivant apparait :

" un problème est survenu lors de l’exécution de l’étape de post installation. l 'installation peut avoir échoue. Erreur de lecture du fichier C:/Program Files(x86)/PostgresSQL/9.5/data/postgresql.conf"

Vous devez appliquer les points suivants :

Désinstaller PostgreSQL et supprimer le répertoire data dans le répertoire d'installation.
Créer le nouvel utilisateur Windows postgres et ajouter le au groupe Administrateurs.
Redémarrer votre machine.
Ouvrer un fenêtre DOS (cmd), lancer la commande suivante : runas /user:postgres cmd.exe
Une nouvelle fenêtre apparait, il vous faut lancer  le programme d'installation à partir de cette fenêtre.
------>>>>


N'ayant pas de machine sous windos 8 ou 10, je n'ai pas pu tester cette solution mais les symptômes ayant l'air similaire, je me dis que cette solution pourrait fonctionner pour vous.


Bien Cordialement,

Pied de page des forums

Propulsé par FluxBB