Re: Putting restrictions on pg_dump?

From: Klint Gore <kg(at)kgb(dot)une(dot)edu(dot)au>
To: lists(at)benjamindsmith(dot)com
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Putting restrictions on pg_dump?
Date: 2006-01-05 07:35:10
Message-ID: 43BCCC2E14A.48EDKG@129.180.47.120
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, 4 Jan 2006 21:00:25 -0800, Benjamin Smith <lists(at)benjamindsmith(dot)com> wrote:
> Is there a way to put a limit on pg_dump, so that it doesn't dump ALL data,
> but that matching a particular query?
>
> Something like:
>
> pg_dump -da --attribute-inserts -t "customers" \
> --matching-query="select * from customers where id=11";
>
> I'd like to selectively dump information from a query, but using the output
> format from pg_dump so that it can be used to create a (partial) database.
>
> Can this sort of thing be done?

Not directly with pg_dump.

You could create a table (create table customers_1 as select * from
customers where id=11) and dump that but remember to change the
tablename in the dump file or after loading it. You dont get any
pk/fk/indexes on the table definition.

You could also use copy to stdout/stdin.

eg dump
psql -d dbname -c "create temp table dump as select * from customers
where id=11; copy dump to stdout;" >dumpfile

eg restore
psql -d newdb -c "copy customers from stdin" <dumpfile

You might need to play around with supplying username/password.

klint.

+---------------------------------------+-----------------+
: Klint Gore : "Non rhyming :
: EMail : kg(at)kgb(dot)une(dot)edu(dot)au : slang - the :
: Snail : A.B.R.I. : possibilities :
: Mail University of New England : are useless" :
: Armidale NSW 2351 Australia : L.J.J. :
: Fax : +61 2 6772 5376 : :
+---------------------------------------+-----------------+

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bruno Wolff III 2006-01-05 07:37:28 Re: How to search?
Previous Message ctobini 2006-01-05 07:31:05 Can't connect to postgresql using 'psql -d database -U user -W'