Обсуждение: dumping only table definitions

Поиск
Список
Период
Сортировка

dumping only table definitions

От
Kevin Brannen
Дата:

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.

Re: dumping only table definitions

От
Alvaro Herrera
Дата:
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.
Triggerswould 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


Re: dumping only table definitions

От
Tom Lane
Дата:
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.
Triggerswould 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


Re: dumping only table definitions

От
Melvin Davidson
Дата:


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!

RE: dumping only table definitions

От
Kevin Brannen
Дата:

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.

 

Melvin wrote:

 

> > 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

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.

Re: dumping only table definitions

От
Vick Khera
Дата:
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.