Em 23/05/2016 09:38, Flavio Henrique Araque Gurgel escreveu:

On 23/05/2016 14:34, Fabrízio de Royes Mello wrote:
On 22-05-2016 12:22, Matheus Saraiva wrote:
Mandei uma pergunta similar a essa, mas como tinha poucas informações
talvez isso implicou em se obter uma resposta. Dessa forma estou
reformulando a pergunta com mais informação bem como com novas descobertas.
Pela primeira vez estou precisando gravar arquivos no banco. No meu caso
eu optei por usar coluna do tipo OID.

Na próxima vez para manter o contexto e organização da lista responda a
sua própria pergunta passando mais informações.


Em uma base de dados localhost, o insert seria assim:

|INSERT INTO fruit VALUES ('peach', lo_import('/usr/images/peach.jpg'));|

Mas e se eu precisar inserir esse mesmo arquivo em um banco de dados remoto?

Nesse exemplo de insert que fiz funciona se a base de dados estiver
local, pois |lo_import| irá buscar o arquivo na máquina onde está
instalado o servidor.

Exato.


Mas eu preciso fazer um insert de uma máquina cliente, ou seja, o
arquivo está na máquina cliente e o insert deve mandar esse arquivo da
máquina cliente para o servidor.

Para isso vc deve utilizar via libpq através do driver/componente que a
implementa na sua linguagem de programação. Que linguagem vc está usando?
Poderia também utilisar o cliente psql e o meta-comando \lo_import que
lê do sistema de arquivos local e retorna o oid do lo.
http://www.postgresql.org/docs/9.5/static/app-psql.html

Decupem pela demorar no retorno, tive realmente que deixar esse trabalho encostado um pouco. Então, a linguagem que eu estou utilizando é python e a biblioteca é psycopg2.

Antes de prosseguir gostaria de tirar outra dúvida.

Eu tenho uma stored procedure que faz o insert nessa tabela. Pelo que pesquisei, o binário deve primeiramente ser inserido no banco e apenas o "código" OID iria para a stored procedure para inserir na tabela. Existe alguma forma de enviar o próprio binário para a stored procedure para que ela faça tudo, ou seja, receber o binário, inserir no banco (lo_import), inserir o OID na tabela.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a