Shell script to extract a table from a plain text dump

Started by Christopher Kings-Lynneover 20 years ago4 messages
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au
1 attachment(s)

If you have huge plain text dumps, and just want to restore one table
it's usually painful. Attached is a small shell script that can take a
plain text dump and extract a single table's COPY data commands from it.

If people think it's interesting and should be developed, I can pop it
on pgfoundry or something.

Chris

Attachments:

restore.shtext/plain; name=restore.shDownload
#2Martijn van Oosterhout
kleptog@svana.org
In reply to: Christopher Kings-Lynne (#1)
Re: Shell script to extract a table from a plain text dump

On Fri, Oct 07, 2005 at 04:46:12PM +0800, Christopher Kings-Lynne wrote:

If you have huge plain text dumps, and just want to restore one table
it's usually painful. Attached is a small shell script that can take a
plain text dump and extract a single table's COPY data commands from it.

If people think it's interesting and should be developed, I can pop it
on pgfoundry or something.

Hmm, what I usually use is:

bzcat $file | sed -ne "/^COPY \"$table\" /,/^\\\.\$/p"

However, error checking and wrapping it into a script is a good idea.
If it got given a couple of switches to control the output, maybe we
can have a pg_restore for text dumps :)

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#3Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Martijn van Oosterhout (#2)
Re: [HACKERS] Shell script to extract a table from a plain text dump

On Fri, Oct 07, 2005 at 11:36:27AM +0200, Martijn van Oosterhout wrote:

On Fri, Oct 07, 2005 at 04:46:12PM +0800, Christopher Kings-Lynne wrote:

If you have huge plain text dumps, and just want to restore one table
it's usually painful. Attached is a small shell script that can take a
plain text dump and extract a single table's COPY data commands from it.

If people think it's interesting and should be developed, I can pop it
on pgfoundry or something.

Hmm, what I usually use is:

bzcat $file | sed -ne "/^COPY \"$table\" /,/^\\\.\$/p"

However, error checking and wrapping it into a script is a good idea.
If it got given a couple of switches to control the output, maybe we
can have a pg_restore for text dumps :)

If only the text dump could have a TOC, by means of which it would be
possible to seek to the exact position of the dump that has a table's
dump, it would certainly be useful. Otherwise, you need to read the
whole file anyway, which is bad. Of course, if it's compressed then
there's not much you can do.

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Los dioses no protegen a los insensatos. �stos reciben protecci�n de
otros insensatos mejor dotados" (Luis Wu, Mundo Anillo)

#4Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Martijn van Oosterhout (#2)
Re: Shell script to extract a table from a plain text dump

Argh! That's some sed coolness :)

Chris

Martijn van Oosterhout wrote:

Show quoted text

On Fri, Oct 07, 2005 at 04:46:12PM +0800, Christopher Kings-Lynne wrote:

If you have huge plain text dumps, and just want to restore one table
it's usually painful. Attached is a small shell script that can take a
plain text dump and extract a single table's COPY data commands from it.

If people think it's interesting and should be developed, I can pop it
on pgfoundry or something.

Hmm, what I usually use is:

bzcat $file | sed -ne "/^COPY \"$table\" /,/^\\\.\$/p"

However, error checking and wrapping it into a script is a good idea.
If it got given a couple of switches to control the output, maybe we
can have a pg_restore for text dumps :)

Have a nice day,