Nice...

Can this be reliably put into a script? The script would take only the DB
name as parameter. And one gotcha I woud look out for is to see the CREATE
DB's template= is nothing but template0, else warn the user that the DB may
not be reliably restored.

Best regards,

On Feb 4, 2008 6:03 PM, Scott Marlowe <[EMAIL PROTECTED]> wrote:

> On Feb 4, 2008 7:10 PM, Guido Neitzer <[EMAIL PROTECTED]> wrote:
> > On 04.02.2008, at 18:00, Gurjeet Singh wrote:
> >
> > > I understand it all needs a little bit of 'vi' wizardry, (or
> > > whichever editor you are using). Also, as with all open-source
> > > suggestions, do not rely on this procedure until you understand what
> > > and how it does what it does.
> >
> > Sure, the only problem is, I'm talking about a laaaarge file. Maybe I
> > just import the whole bunch and drop some of the databases after that.
> > Seems to be less hazzle, but takes probably an hour or two longer, so
> > I'll take a service window next night ...
> >
> > Thanks for the hints.
>
> Here's what I'd do.  First, use head, tail, and grep to find the lines
> you need to cut at...
>
> for instance, the create database statements will come up first, so
> something like this:
>
> For a test from dumpall I did this:
>
> $ grep -in "Create database"  test.sql
> 34:CREATE DATABASE smarlowe WITH TEMPLATE = template0 OWNER = postgres
> ENCODING = 'LATIN1';
>
> That pulls the create database line out.  Then, I can find the dump
> data with this:
>
> $ grep -in \\connect test.sql
> 5:\connect postgres
> 38:GRANT CONNECT ON DATABASE template1 TO PUBLIC;
> 41:\connect postgres
> 141:\connect smarlowe
> 335:\connect template1
>
> So, for the smarlowe database I need to get lines 141 to 334.  Quick test:
>
> head -n 141 test.sql |tail -n 1
> \connect smarlowe
>  head -n 335 test.sql|tail -n 1
> \connect template1
>
> So, the lines are where They should be and head / tail lets me grab
> them.  Now, to grab the bits I need:
>
> echo $((335-141))
> 194  -- Number of lines to grab
>
> So, to grab the dump, I can use
>
> $ head -n 334 test.sql|tail -n 194 > smarlowe.sql
>
> Note I'm grabbing 335-1 since I don't actually want the \connect template1
> bit.
>
> Quick test:
> $ head -n 334 test.sql|tail -n 194|head -n 1
> \connect smarlowe
> $ head -n 334 test.sql|tail -n 194|tail -n 4
> --
> -- PostgreSQL database dump complete
> --
>



-- 
[EMAIL PROTECTED]
[EMAIL PROTECTED] gmail | hotmail | indiatimes | yahoo }.com

EnterpriseDB      http://www.enterprisedb.com

17° 29' 34.37"N,   78° 30' 59.76"E - Hyderabad
18° 32' 57.25"N,   73° 56' 25.42"E - Pune
37° 47' 19.72"N, 122° 24' 1.69" W - San Francisco *

http://gurjeet.frihost.net

Mail sent from my BlackLaptop device

Reply via email to