Thread: Import image into postgresql database

Import image into postgresql database

From
"francescoboccacci@libero.it"
Date:
Dear all,
i have a question for you: I would like to store  images (jpg) into a table of
postgresql database. My question is : what is the corret type of tables filed
that i have to use? Reading some forum of article in the net there are two
ways: bytea or oid type. Whati is the best type to store my images?
I tried to insert in both ways. With oid type i able to insert images, but
with bytea i don't understand how store it .
i create a test table:

CREATE TABLE public.images
(
  imgname text,
  img bytea
)

and i tried many ways:


NSERT INTO images (imgname, img)
VALUES ('beautiful image', bytea_import('C:\\9999.jpg'));

or

INSERT INTO  images (img) VALUES (pg_escape_bytea('C:\\9999.jpg'))

but it doesn't work.
So How can i solve my problem? and another question.. If i able to store my
image into bytea fiels..how can i export it for see it for example with paint?

Thanks

Francesco Boccacci




Re: Import image into postgresql database

From
Gabriele Bartolini
Date:
 Ciao Francesco,

 On Fri, 1 Jul 2011 12:13:33 +0200 (CEST), "francescoboccacci@libero.it"
 <francescoboccacci@libero.it> wrote:
> I tried to insert in both ways. With oid type i able to insert
> images, but
> with bytea i don't understand how store it .

 I would definitely suggest to use 'bytea' column rather than large
 objects support in PostgreSQL, as it is much simpler to manage.

> INSERT INTO  images (img) VALUES (pg_escape_bytea('C:\\9999.jpg'))

 bytea is an array of bytes, it is like a binary string. You must
 provide directly the binary content yourself in your SQL query
 (PostgreSQL does not have a clue about where your locale file is).

 Loading must be performed at client level, using your favourite
 application language, then passed to PostgreSQL. Every major language
 now is able to deal with PostgreSQL's bytea type transparently.
 Otherwise, you can still do it yourself, by properly formatting every
 input byte in your SQL query using the format described here:
 http://www.postgresql.org/docs/9.0/static/datatype-binary.html

> but it doesn't work.
> So How can i solve my problem? and another question.. If i able to
> store my
> image into bytea fiels..how can i export it for see it for example
> with paint?

 You still have to think in terms of binary information, sequences of
 bytes. Your application might return it via the web (typical case) or
 save it locally in a temporary folder for display.

 Ciao,
 Gabriele

--
  Gabriele Bartolini - 2ndQuadrant Italia
  PostgreSQL Training, Services and Support
  Gabriele.Bartolini@2ndQuadrant.it - www.2ndQuadrant.it