Vous n'êtes pas identifié(e).
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.
Dernière modification par NOURI (07/12/2012 23:53:48)
Cordiales Salutations
Hors ligne
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
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 !
Cordiales Salutations
Hors ligne
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
Salut Gaullime,
J'espère que tu es bien
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
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
Guillaume.
Hors ligne
L'utilisation de \lo_import de psql ne suffirait pas ?
Julien.
https://rjuju.github.io/
Hors ligne
OK, merci !
Cordiales Salutations
Hors ligne