Re: Simplfied Bytea input/output?

Поиск
Список
Период
Сортировка
От David Rysdam
Тема Re: Simplfied Bytea input/output?
Дата
Msg-id 411244E4.8030205@ll.mit.edu
обсуждение исходный текст
Ответ на Re: Simplfied Bytea input/output?  (Jerry LeVan <jerry.levan@eku.edu>)
Список pgsql-general
Incredibly, I was just sitting down to do something similar for a
problem I have when I read this email.  I'm going to do a temp table
too, but I did think of another solution.  It would work for me but it's
a little complex for my stage of PG expertise: Create a user-defined
type for "pic" and define an input/output function for it.  Someone can
correct me but my understanding says that probably won't be as fast as a
direct bulk copy, but it can't be slower than the temp table method and
it is certainly simpler.

Jerry LeVan wrote:

> Hi,
>
> I have been looking for a fairly simple way to upload data into
> a bytea field without having to write custom C code for each table
> that contains a bytea field.
>
> With some good advice from Daniel Verite and reading the fine manual
> here is my procedure for uploading files to bytea fields.
>
> 1) Create an "upload table" that might look like
> \d pics                            Table "public.pics"
>  Column |  Type   |                        Modifiers
> --------+---------
> +---------------------------------------------------------
>  info   | text    |
>  image  | bytea   |
>  ident  | integer | not null default
> nextval('public.pics_ident_seq'::text)
>
> 2) I wrote a single C procedure that would upload to this table
> here is a fragment of the code:
>
> int usage()
> {
>   fprintf(stderr,"loadBytea <connect string> <table> <comment>
> <file>\n");
>   fprintf(stderr,"  This will insert the comment (a string) and the
> contents of file\n");
>   fprintf(stderr,"  into the first two columns of the specified
> table.\n");
>   exit(0);
> }
>
> The core of the program is a wrapper around the PQexecParams routine.
>
> The source code for the program is located here:
>       http://homepage.mac.levanj/Cocoa/programs/loadBytea.c
>
> 3) Once the file is uploaded (say to table pics) I can use the update
> command to load the bytea field into the desired table, perhaps
> something like:
>
> update person set picture = pics.image
>   from pics
>   where pics.ident=15 and person.first_name='Marijo'
>
> Once the bytea field has been loaded into the target, it
> can be deleted from the upload table ( or a reference could
> be placed in the "person" table to the appropriate picture and
> all of the pictures keep in the upload table).
>
> This method does not scale well to bulk input but I think it
> would not be difficult to rewrite the loadBytea.c program as
> needed.
>
> Jerry
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if
> your
>      joining column's datatypes do not match
>
>


В списке pgsql-general по дате отправления:

Предыдущее
От: award@dominionsciences.com
Дата:
Сообщение: Re: most idiomatic way to "update or insert"?
Следующее
От: Stephan Szabo
Дата:
Сообщение: Re: case insensitive sorting & searching in oracle 10g