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/12/2017 15:32:44

shishi
Membre

Récupérer le contenu d'un champ de type oid si possible coté client

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

#2 06/12/2017 16:45:37

dverite
Membre

Re : Récupérer le contenu d'un champ de type oid si possible coté client

shishi a écrit :

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

Hors ligne

Pied de page des forums