Thread: pg_proc Question

pg_proc Question

From
Oisin Glynn
Date:
I have named all my functions in a pretty unique way and would like to
export just my functions. Is there any way to move just these  functions
from one db to another.has anyone got a clever piece of SQL that spits
out ddl from a select on pg_proc?  Or could I use the copy command on
pg_proc to spit my functions to file and then copy them into the new db?
My issue is that I have allot of dblink and other things I do not want
or need in the db and do not want to propagate this any further.

Any help would be appreciated,

Oisin


Attachment

Re: pg_proc Question

From
Martijn van Oosterhout
Date:
On Thu, Nov 02, 2006 at 09:57:28AM -0500, Oisin Glynn wrote:
> I have named all my functions in a pretty unique way and would like to
> export just my functions. Is there any way to move just these  functions
> from one db to another.has anyone got a clever piece of SQL that spits
> out ddl from a select on pg_proc?  Or could I use the copy command on
> pg_proc to spit my functions to file and then copy them into the new db?
> My issue is that I have allot of dblink and other things I do not want
> or need in the db and do not want to propagate this any further.

I would say the easiest is to use pg_dump and then filter the output.
It's simple enough for sed I think:

pg_dump database | sed -ne '/^CREATE FUNCTION tag/,/^--/p'

works well here... Replace tag with a pattern matching your functions.
If you're using pl/pgsql you may need to do something more clever with
the end marker...

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

Attachment

Re: pg_proc Question

From
Oisin Glynn
Date:
Martijn van Oosterhout wrote:
> On Thu, Nov 02, 2006 at 09:57:28AM -0500, Oisin Glynn wrote:
>
>> I have named all my functions in a pretty unique way and would like to
>> export just my functions. Is there any way to move just these  functions
>> from one db to another.has anyone got a clever piece of SQL that spits
>> out ddl from a select on pg_proc?  Or could I use the copy command on
>> pg_proc to spit my functions to file and then copy them into the new db?
>> My issue is that I have allot of dblink and other things I do not want
>> or need in the db and do not want to propagate this any further.
>>
>
> I would say the easiest is to use pg_dump and then filter the output.
> It's simple enough for sed I think:
>
> pg_dump database | sed -ne '/^CREATE FUNCTION tag/,/^--/p'
>
> works well here... Replace tag with a pattern matching your functions.
> If you're using pl/pgsql you may need to do something more clever with
> the end marker...
>
> Have a nice day,
>
Thanks for the help.  After a quick intro to sed (I'm a Windows user) I
have this working a treat for me.   I used the following slight mod and
it seems to handle  both sql and pl/pgsql on 8.1.4

pg_dump database | sed -ne '/^CREATE FUNCTION tag/,/^-- TOC entry/p'


The "-- TOC entry" seems to act as a perfect end tag. I actually dumped
the db as plain from pgAdmin and used this file as input to sed rather
than piping the pg_dump into sed.
The only difference was that I needed double quotes not single quotes in
my sed command so command ended up like

sed -ne "/^CREATE FUNCTION tag/,/^-- TOC entry/p" mybackupfile.backup
 >myfunctions.sql

Thanks,
Oisin



Attachment