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 07/12/2012 13:09:04

NOURI
Membre

[RESOLU] Enregistrement d'une image dans une base pg

Salut à tous,


Voila,  je souhaite enregistrer des captures dans une base postgres.

J'arrive pas à utiliser correctement les deux fonction lo_export  et lo_import.

La requête suivante ne fonctionne pas sur un poste client ...

Code SQL :

INSERT INTO capturesv2 (numserie_capture,nom_capture,data_capture,utilisateur,datecreation,datemaj) values 
('SN_CARTE01','solodata',lo_import('c:/Capture.JPG'),'solo',current_timestamp,current_timestamp); 

Voici le message d'erreur :

 ERREUR:  n'a pas pu ouvrir le fichier serveur « c:/Capture.JPG » : No such file or directory


********** Error **********

ERREUR: n'a pas pu ouvrir le fichier serveur « c:/Capture.JPG » : No such file or directory
SQL state: 58P01

Comment faire pour importer / exporter des images sur un PC Client (Appli windev avec libpq.dll)?

NB : La même requête fonctionne correctement si je l'exécute sur le PC serveur.


Merci infiniment pour le support.   wink  wink  wink

Dernière modification par NOURI (07/12/2012 23:53:48)


Cordiales Salutations

Hors ligne

#2 07/12/2012 13:46:13

hypn0s
Membre

Re : [RESOLU] Enregistrement d'une image dans une base pg

Bonjour Nouri,

Je n'ai pas testé votre requête, mais voici ce que je vérifierais en premier:

1) Le fichier signalé comme manquant existe-t-il bien et avec la même extension ?
    (Je veux dire, il porte bien l'extension ".JPG" et non ".JPEG" ?

2) Essayez de mettre "C:\" à la place de "c:/" ?
    Les slash "/" sont utilisés pour les chemins sous Unix/Linux et les "\" antislash par pour les chemins sous Windows.
    Bien que les logiciels conçus sur Unix / Linux acceptent souvent sous Windows les chemins à la sauce Unix/Linux,   j'essaierais quand même d'écrire le chemin à la sauce Windows pour voir.

3) Windows est insensible à la casse, mais comme PostgreSQL vient plutôt du monde Unix/Linux, essayez de respecter strictement la casse des caractères de vos chemins et noms de fichiers, c'est-à-dire les majuscules et minuscules. Par exemple "C:" au lieu de "c:". Ceci ne résoudra peut-être pas votre problème, mais au moins vous éliminez une cause d'erreur possible.

Je pars toujours du principe que les ordis sont des machines pénibles et qu'il faut les caresser dans le sens du poil...
En éliminant tout ce qui pourrait potentiellement poser problème, vous gagnez quelques certitudes qui vous aident ensuite à traquer les bugs.

Hors ligne

#3 07/12/2012 14:49:54

NOURI
Membre

Re : [RESOLU] Enregistrement d'une image dans une base pg

Salut,

Merci pour votre réponse !

En fait, j'ai bien vérifié le chemin de l'image sur mon poste client, nickel pas de problème
Également j'ai testé  avec 'c:\\Capture.JPG' même erreur.

Par contre le message d'erreur indique bien le serveur ( ERREUR: n'a pas pu ouvrir le fichier serveur)
Autrement le moteur du serveur à cherché l'image sur le disque dur du pc serveur c'est pas sur le disque client.
On est en phase ?

Merci !   wink


Cordiales Salutations

Hors ligne

#4 07/12/2012 15:03:06

gleu
Administrateur

Re : [RESOLU] Enregistrement d'une image dans une base pg

En fait, lo_import est exécuté sur le serveur, donc il n'a aucun moyen d'avoir accès à votre PC. Il faut tout d'abord déplacer le fichier sur le serveur, puis faire l'insert.

Une autre solution serait de créer un outil qui utiliserait la fonction lo_import de la libpq. Cela étant dit, c'est un travail plus complexe.


Guillaume.

Hors ligne

#5 07/12/2012 15:45:34

NOURI
Membre

Re : [RESOLU] Enregistrement d'une image dans une base pg

Salut Gaullime,

J'espère que tu es bien wink

La je me trouve obligé de creuser les API libpq.

Peux-tu STP expliquer un peu plus ?
Complexe dans quel sens ?

Merci

Dernière modification par NOURI (07/12/2012 15:46:16)


Cordiales Salutations

Hors ligne

#6 07/12/2012 21:55:42

gleu
Administrateur

Re : [RESOLU] Enregistrement d'une image dans une base pg

Complexe dans le sens, il faut écrire un programme en C utilisant la libpq. Pas difficile si on connaît, très difficile dans le cas contraire smile


Guillaume.

Hors ligne

#7 07/12/2012 23:25:05

rjuju
Administrateur

Re : [RESOLU] Enregistrement d'une image dans une base pg

L'utilisation de \lo_import de psql ne suffirait pas ?

Hors ligne

#8 07/12/2012 23:53:05

NOURI
Membre

Re : [RESOLU] Enregistrement d'une image dans une base pg

OK, merci !


Cordiales Salutations

Hors ligne

Pied de page des forums