Обсуждение: Bytea question

Поиск
Список
Период
Сортировка

Bytea question

От
"Chris Hoover"
Дата:
Hopefully a quick question.

If I store a file into a bytea field, is there anyway for postgres to read the contents of the file?

Here is my scenario:

Receive text file
insert file into bytea field
insert trigger fires
  - read file contents
  - post contents into production tables

Is this at all possible, or am I going to need to store the original file and store/pass the file contents?


Thanks,

Chris

Re: Bytea question

От
Alvaro Herrera
Дата:
Chris Hoover escribió:
> Hopefully a quick question.
>
> If I store a file into a bytea field, is there anyway for postgres to read
> the contents of the file?

When you say "store a file", do you mean "store a filename"?

> Here is my scenario:
>
> Receive text file
> insert file into bytea field
> insert trigger fires
>  - read file contents
>  - post contents into production tables
>
> Is this at all possible, or am I going to need to store the original file
> and store/pass the file contents?


--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: Bytea question

От
"Chris Hoover"
Дата:
No, I need to store the entire file as received into the database.

Chris

On 4/11/07, Alvaro Herrera < alvherre@commandprompt.com> wrote:
Chris Hoover escribió:
> Hopefully a quick question.
>
> If I store a file into a bytea field, is there anyway for postgres to read
> the contents of the file?

When you say "store a file", do you mean "store a filename"?

> Here is my scenario:
>
> Receive text file
> insert file into bytea field
> insert trigger fires
>  - read file contents
>  - post contents into production tables
>
> Is this at all possible, or am I going to need to store the original file
> and store/pass the file contents?


--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: Bytea question

От
Alvaro Herrera
Дата:
Chris Hoover escribió:
> No, I need to store the entire file as received into the database.

Then you original question does not make any sense to me, because if you
pass the entire file content, why would Postgres *not* be able to read
it?


> On 4/11/07, Alvaro Herrera <alvherre@commandprompt.com> wrote:
> >
> >Chris Hoover escribió:
> >> Hopefully a quick question.
> >>
> >> If I store a file into a bytea field, is there anyway for postgres to
> >read
> >> the contents of the file?
> >
> >When you say "store a file", do you mean "store a filename"?
> >
> >> Here is my scenario:
> >>
> >> Receive text file
> >> insert file into bytea field
> >> insert trigger fires
> >>  - read file contents
> >>  - post contents into production tables
> >>
> >> Is this at all possible, or am I going to need to store the original
> >file
> >> and store/pass the file contents?


--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: Bytea question

От
"Chris Hoover"
Дата:
What I am needing to do is to store a file I receive, say file1.dat.  I want to store file1.dat into a bytea field so we can always go back and retrieve the original file to verify if needed.  However, I also need to process the data that is in file1.dat (1234 johnny 1254.12).  When I load file1.dat into the bytea field, I just have a large escaped record that represents the file.  What I am hoping is possible is to have postgres look into file1.dat's byte a field and be able to read the data in file1.dat (assuming it's a simple text file).  That way, the database can do all of the heavy lifting and loading.

so.

Insert file1.dat into a bytea field of table a.
Table a's insert trigger fires, and postgres looks at the bytea field and see's file1.dat and its contents of "1234 johnny 1254.12". 
Trigger runs logic on data and loads into appropriate tables

I hope this makes sense.

Chris


On 4/11/07, Chris Hoover <revoohc@gmail.com> wrote:
No, I need to store the entire file as received into the database.

Chris


On 4/11/07, Alvaro Herrera < alvherre@commandprompt.com> wrote:
Chris Hoover escribió:
> Hopefully a quick question.
>
> If I store a file into a bytea field, is there anyway for postgres to read
> the contents of the file?

When you say "store a file", do you mean "store a filename"?

> Here is my scenario:
>
> Receive text file
> insert file into bytea field
> insert trigger fires
>  - read file contents
>  - post contents into production tables
>
> Is this at all possible, or am I going to need to store the original file
> and store/pass the file contents?


--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: Bytea question

От
Mike Goldner
Дата:
It sounds like you want to parse the contents of the bytea column within
a trigger/stored procedure.  I haven't done this myself (I process the
bytea data in java as an input stream after retrieving it from
postgres), but you could probably use a FOR loop over the bytea column
and then use some combination of the Binary String Functions
(http://www.postgresql.org/docs/current/static/functions-binarystring.html) to process the file data.

Mike

On Wed, 2007-04-11 at 09:22 -0400, Alvaro Herrera wrote:
> Chris Hoover escribió:
> > No, I need to store the entire file as received into the database.
>
> Then you original question does not make any sense to me, because if you
> pass the entire file content, why would Postgres *not* be able to read
> it?
>
>
> > On 4/11/07, Alvaro Herrera <alvherre@commandprompt.com> wrote:
> > >
> > >Chris Hoover escribió:
> > >> Hopefully a quick question.
> > >>
> > >> If I store a file into a bytea field, is there anyway for postgres to
> > >read
> > >> the contents of the file?
> > >
> > >When you say "store a file", do you mean "store a filename"?
> > >
> > >> Here is my scenario:
> > >>
> > >> Receive text file
> > >> insert file into bytea field
> > >> insert trigger fires
> > >>  - read file contents
> > >>  - post contents into production tables
> > >>
> > >> Is this at all possible, or am I going to need to store the original
> > >file
> > >> and store/pass the file contents?
>