Vous n'êtes pas identifié(e).
Bonjour à tous,
dans le cadre d'un projet je suis confronté à la problématique suivante :
j'ai une application 1 qui utilise une base postgres (base N°1) et qui la gestion de fichier (ces fichier sont stocké en base dans un champ de type oid). Je ne maîtrise ni le code de l'application, ni la structure de la base (j'y ai accès uniquement en lecture). cette application est sur un serveur Tomcat.
J'ai une application 2 qui utilise une base postgres (base N°2) et qui permet d'intégrer (un ou plusieurs) fichier(s) contenu dans la base N°1. C'est une application Access qui se trouve sur un espace réseau partagé.
Découvrant les champs de type oid, je me tourne vers vous afin de connaitre les différentes options qui s'offre a moi pour récupérer le fichier coté client.
L'idéal serait que mon application Access lance une commande qui récupérait le fichier contenu dans la base N°1 sur l'espace réseau partagé, pour que par la suite je puisse avec mon ETL (Talend) lire se fichier et intégrer les données dans la base N°2.
Merci par avance
n'hésitez pas si vous trouvez que mon explication n'est pas claire, ou si vous avez besoin d'informations supplémentaires
cordialement
Shishi
Hors ligne
L'idéal serait que mon application Access lance une commande qui récupérait le fichier contenu dans la base N°1 sur l'espace réseau partagé
Le plus simple dans ce cas est que la commande soit psql.
psql [options de connexion] -c '\lo_export oid chemin-de-fichier'
permet de récupérer l'objet large correspondant à l'oid en 1er paramètre dans le fichier en 2eme paramètre.
Sinon il doit y avoir des solutions à travers ODBC mais la difficulté est de savoir à quel type sous Access peut être associé l'objet large. Sur les versions modernes de PG, on peut appliquer la fonction lo_get() pour avoir tout le contenu d'un objet large en un seul champ BYTEA. Il reste quand même à voir comment lire le BYTEA via ODBC mais ça doit se trouver dans la doc du driver ODBC.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne