dumping only table definitions

Started by Kevin Brannenalmost 8 years ago6 messagesgeneral
Jump to latest
#1Kevin Brannen
KBrannen@efji.com

I'm trying to figure out how to dump only the table definitions, well those and things they need directly, like sequences & types. What I do NOT want are all the millions (not literally but it feels like it :)) of functions we have. Triggers would be all right if I must, as we only have a few of those.

I've tried various combinations of args to pg_dump, with -s being what I'd like to work, but I still get all the functions.

I suppose I could filter it with Perl or Awk, but that could be tricky. In fact, the best my searching could find is to do:

pg_dump -s databasename | awk 'RS="";/CREATE TABLE[^;]*;/'

which fails in some interesting ways.

I could dump the schema (with functions) then load it into another DB then programmatically drop all the functions before dumping that with pg_dump, but again why should I have to.

Is there any Pg tool that gives me just the table defs or am I going to have to write my own?

Thanks,
Kevin
This e-mail transmission, and any documents, files or previous e-mail messages attached to it, may contain confidential information. If you are not the intended recipient, or a person responsible for delivering it to the intended recipient, you are hereby notified that any disclosure, distribution, review, copy or use of any of the information contained in or attached to this message is STRICTLY PROHIBITED. If you have received this transmission in error, please immediately notify us by reply e-mail, and destroy the original transmission and its attachments without reading them or saving them to disk. Thank you.

#2Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Kevin Brannen (#1)
Re: dumping only table definitions

On 2018-Jun-29, Kevin Brannen wrote:

I'm trying to figure out how to dump only the table definitions, well those and things they need directly, like sequences & types. What I do NOT want are all the millions (not literally but it feels like it :)) of functions we have. Triggers would be all right if I must, as we only have a few of those.

Try "pg_dump -Fc" followed by pg_restore -l. You can edit the list
emitted there, then use it with pg_restore -L.

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#2)
Re: dumping only table definitions

Alvaro Herrera <alvherre@2ndquadrant.com> writes:

On 2018-Jun-29, Kevin Brannen wrote:

I'm trying to figure out how to dump only the table definitions, well those and things they need directly, like sequences & types. What I do NOT want are all the millions (not literally but it feels like it :)) of functions we have. Triggers would be all right if I must, as we only have a few of those.

Try "pg_dump -Fc" followed by pg_restore -l. You can edit the list
emitted there, then use it with pg_restore -L.

I think something involving "--tables '*.*'" might work, too.
Be careful about shell-command quoting.

regards, tom lane

#4Melvin Davidson
melvin6925@gmail.com
In reply to: Kevin Brannen (#1)
Re: dumping only table definitions

On Fri, Jun 29, 2018 at 6:30 PM, Kevin Brannen <KBrannen@efji.com> wrote:

I’m trying to figure out how to dump only the table definitions, well
those and things they need directly, like sequences & types. What I do NOT
want are all the millions (not literally but it feels like it J) of
functions we have. Triggers would be all right if I must, as we only have a
few of those.

I’ve tried various combinations of args to pg_dump, with -s being what I’d
like to work, but I still get all the functions.

I suppose I could filter it with Perl or Awk, but that could be tricky. In
fact, the best my searching could find is to do:

pg_dump -s databasename | awk 'RS="";/CREATE TABLE[^;]*;/'

which fails in some interesting ways.

I could dump the schema (with functions) then load it into another DB then
programmatically drop all the functions before dumping that with pg_dump,
but again why should I have to.

Is there any Pg tool that gives me just the table defs or am I going to
have to write my own?

Thanks,

Kevin
This e-mail transmission, and any documents, files or previous e-mail
messages attached to it, may contain confidential information. If you are
not the intended recipient, or a person responsible for delivering it to
the intended recipient, you are hereby notified that any disclosure,
distribution, review, copy or use of any of the information contained in or
attached to this message is STRICTLY PROHIBITED. If you have received this
transmission in error, please immediately notify us by reply e-mail, and
destroy the original transmission and its attachments without reading them
or saving them to disk. Thank you.

What I do NOT want are all the millions (not literally but it feels like

it J) of functions we have.

It sounds like you would best be served by installing pg_extractor. In
essence, it is a super flexible version of pg_dump. You have your choice of
exactly what you want to dump.

https://github.com/omniti-labs/pg_extractor

--
*Melvin Davidson*
*Maj. Database & Exploration Specialist*
*Universe Exploration Command – UXC*
Employment by invitation only!

#5Kevin Brannen
KBrannen@efji.com
In reply to: Melvin Davidson (#4)
RE: dumping only table definitions

On Fri, Jun 29, 2018 at 6:30 PM, Kevin Brannen <KBrannen@efji.com<mailto:KBrannen@efji.com>> wrote:
I’m trying to figure out how to dump only the table definitions, well those and things they need directly, like sequences & types. What I do NOT want are all the millions (not literally but it feels like it ☺) of functions we have. Triggers would be all right if I must, as we only have a few of those.

Melvin wrote:

What I do NOT want are all the millions (not literally but it feels like it ☺) of functions we have.

It sounds like you would best be served by installing pg_extractor. In essence, it is a super flexible version of pg_dump. You have your choice of exactly what you want to dump.

https://github.com/omniti-labs/pg_extractor

Thanks Melvin, that looks like it would do what I want. If it doesn’t, I’ll try Alvaro’s and Tom’s suggestions.

Kevin
This e-mail transmission, and any documents, files or previous e-mail messages attached to it, may contain confidential information. If you are not the intended recipient, or a person responsible for delivering it to the intended recipient, you are hereby notified that any disclosure, distribution, review, copy or use of any of the information contained in or attached to this message is STRICTLY PROHIBITED. If you have received this transmission in error, please immediately notify us by reply e-mail, and destroy the original transmission and its attachments without reading them or saving them to disk. Thank you.

#6Vick Khera
vivek@khera.org
In reply to: Alvaro Herrera (#2)
Re: dumping only table definitions

On Fri, Jun 29, 2018 at 6:39 PM, Alvaro Herrera <alvherre@2ndquadrant.com>
wrote:

On 2018-Jun-29, Kevin Brannen wrote:

I'm trying to figure out how to dump only the table definitions, well

those and things they need directly, like sequences & types. What I do NOT
want are all the millions (not literally but it feels like it :)) of
functions we have. Triggers would be all right if I must, as we only have a
few of those.

Try "pg_dump -Fc" followed by pg_restore -l. You can edit the list
emitted there, then use it with pg_restore -L.

From my experience, this is the right solution.