PostgreSQL exporter de grandes objet au client
J'ai un PostgreSQL 9.1 base de données dans laquelle sont stockées les images comme des objets de grande taille.
Est-il un moyen d'exporter les fichiers pour les clients du système de fichiers par le biais d'une requête SQL?
select lo_export(data,'c:\img\test.jpg') from images where id=0;
Je suis à la recherche d'une manière similaire à la ligne au-dessus, mais avec le client en tant que cible.
Merci à l'avance!
OriginalL'auteur Herr von Wurst | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
cette réponse est très tard, mais sera utile, donc quelqu'un j'en suis sûr
Pour obtenir les images de la serveur à la système client vous pouvez utiliser cette
Où
la documentation est ici commandprompt.com
OriginalL'auteur PresleyDias
Georg,
Selon la la documentation pour la 9.1, lo_export est relatif pour le client de l'exécution de l'appel. Donc, si clientA est connecté à databaseB, quand clientA exécute SQL, lo_export devez créer le fichier sur clientA où vous l'ai dit il à.
À la lumière du fait que vous avez indiqué votre utilisation de JDBC sous MATLAB (je ne suis pas familier avec ce que vous pouvez faire là-dessous et je ne suis pas familier avec l'interface pour effectuer l'appel), si vous appelez cela de la connexion JDBC manuellement:
J'ai joué très lâche et rapide avec JDBC opérations pour des raisons de concision ici. Il devrait y avoir plus de contrôle d'erreur ainsi que les try/catch/finally consolidés pour l'envelopper et de nettoyer les connexions.
Copie de fichier d'exemple.
Pas un problème. Si cela a résolu votre problème, veuillez cocher cette réponse est acceptée.
Malheureusement non, je suis nouveau sur Stackoverflow et ainsi soumis la réponse avant en appuyant sur le retour, quand tout ce que je voulais, c'était un saut de ligne. 😀
Comment vous connecter à l'instance? À l'aide de psql?
AH HA! ok, je vois ce que vous essayez de faire
OriginalL'auteur Dave G
Il n'est pas possible, parce que tout le serveur PostgreSQL peut faire est d'envoyer des données au client par le biais de la connexion réseau que le client a établi.
En particulier, il ne peut pas créer un fichier sur le système de fichiers du client, seulement le code client peut le faire.
\lo_export lo_oid filename The large object export command; this lets you export the large object with OID lo_oid to filename on your local filesystem. This is different from the lo_export() server function in the same way the \copy and the SQL COPY commands are different.
à partir de commandprompt.com/ppbook/c12119La question dit "au travers d'une requête SQL", et \lo_export n'est pas une requête SQL, ni dans le cadre d'une requête SQL. C'est une commande interne de la psql client programme.
Ah ok, je n'a pas penser que
OriginalL'auteur Daniel Vérité
Source: http://www.postgresql.org/docs/8.4/static/lo-funcs.html
OriginalL'auteur Andre Valdestilhas