Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2007, 10h09   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 14
Points : 3
Points : 3
Par défaut transfert de fichiers

Bonjour, j'utilise Visual C++ 2005 Express. J'essaie de transférer un fichier (son) depuis le dd local vers la bdd.

Lorsque j'appelle la fonction :
Oid lo_import(PGconn *conn, const char *filename)
elle renvoie tjrs 0 qui correspond à InvalidOid donc l'importation n'a pas été effectuée.
Voici le code que j'utilise :


const char *conninfo;
PGconn *conn;

conninfo = //infos sur login et mot de passe que je ne communique pas
conn = PQconnectdb(conninfo);

if (PQstatus(conn) != CONNECTION_OK)
{
connstatus="PROBLEME DE CONNECTION";
}
else
Oid oid=lo_import(conn,"E:/DSS_FLDA/1min.DSS");

J'ai vérifié que le fichier existait et qu'on pouvait y accéder en mode lecture.
Comment procéder pour effectuer ce transfert?
sgu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 09h59   #2
Membre régulier
 
Inscription : juin 2004
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 52
Points : 80
Points : 80
Envoyer un message via ICQ à Shepard Envoyer un message via MSN à Shepard
Bonjour,

avec tout le respect que je vous dois, je pense que ce n'est pas une bonne idée de stocker des fichiers directement dans une base de données, même si les "large objects" semblent avoir été conçus pour ça ...

Stockez plutôt vos fichiers quelque part sur le disque dur et n'insérez que l'url de ces fichiers dans votre base de données, ça ralentirait bien moins le reste de la base

De plus si un jour vous séparez la base de données du reste de l'application, vous devrez à chaque fois faire passer tout le fichier par le réseau, vous rendez-vous compte de la perte de temps que celà représente ?

Enfin bien sûr ce n'est que mon avis, libre à vous de le suivre ou pas

Bonne chance pour la suite ! ( sinon désolé je n'ai pas la réponse à votre "vraie" question ).
Shepard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 16h01   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 14
Points : 3
Points : 3
Bonjour,

En fait je dois faire en sorte qu'un pc connecté à un réseau local puisse recevoir n'importe quel fichier stocké sur le dd d'un pc de ce réseau.

Est-il possible de s'affranchir de l'import/export au niveau de la bdd ? Dans ce cas, il faudrait stocker le chemin du fichier qui n'est donc pas c:\... puisque cette notation repère le dd local.
sgu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 23h20   #4
Membre régulier
 
Inscription : juin 2004
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 52
Points : 80
Points : 80
Envoyer un message via ICQ à Shepard Envoyer un message via MSN à Shepard
Bonsoir,

Sous windows il me semble ( à confirmer ) que le chemin réseau d'un fichier est \\serveur\nom_du_partage\reste_du_chemin

Bien sûr tu dois partager un dossier, éventuellement protégé, et faire en sorte que les noms correspondent

Une autre solution serait d'installer un serveur apache ( si ce n'est pas déjà fait ) qui pourrait gérer le partage

Ceci dit, s'il est possible d'utiliser ce fichier depuis l'ordinateur distant, ce serait peut être préférable ... Enfin ça dépend de l'utilisation du fichier en question

Bonne chance pour la suite !
Shepard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 14h28   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 14
Points : 3
Points : 3
C'est bon, j'ai réussi à effectuer l'import et l'export de fichiers en utilisant les fonctions de type 'server' et non 'client'. Pb résolu.
sgu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 15h15   #6
Invité de passage
 
Inscription : juillet 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 14
Points : 3
Points : 3
Sauf que quand j'appelle lo_import ou lo_export à partir d'un pc se connectant à la bdd du pc serveur, l'argument du chemin du fichier concerne le pc serveur et non le pc client, ce qui complique la tâche.
sgu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 09h17   #7
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
Bonjour

Il faut le stocker dans un champ de type bytea, dans ce cas pas besoin d'envoyer les fichiers coté serveur avant de les traités
__________________
Christophe Chauvet (KrysKool)
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 10h18   #8
Invité de passage
 
Inscription : juillet 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 14
Points : 3
Points : 3
En cherchant dans la doc de PostgreSQL 8.1 (version que j'utilise), j'ai trouvé le pb. Il faut que les fonctions lo_import et lo_export soient appelées à l'intérieur d'une transaction, c'est-à-dire entre une commande :
et une commande :
,
commandes que j'ai rajoutées.

Maintenant les fonctions lo_import et lo_export retournent SUCCESS.

En ce qui concerne le choix du champ pour stocker les fichiers, j'ai pris le type large object, je ne sais pas trop la différence avec le type bytea, à part qu'on parle de chaînes de caractère pour le type bytea, ce qui ne devrait pas convenir dans mon cas car je cherche à faire un transfert de fichier son d'un pc à un autre. Je passe donc par un stockage sur le serveur.
sgu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h23.


 
 
 
 
Partenaires

Hébergement Web