Thread: pg_proc Question
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
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
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