I tried the below script (again, going from 6.3->6.4.2 on RedHat 5.2
Linux).. Now I don't get the out of memory errors but it still chokes up
on the syntax.. The back end spits out things like:
ERROR: type name lookup of char16 failed
ERROR: ChangeAcl: class "accounts" not found
ERROR: ChangeAcl: class "accounts" not found
ERROR: COPY command failed. Class accounts does not exist.
ERROR: parser: parse error at or near "0"
ERROR: type name lookup of char8 failed
ERROR: ChangeAcl: class "passwd" not found
ERROR: ChangeAcl: class "passwd" not found
ERROR: type name lookup of char8 failed
ERROR: ChangeAcl: class "page_text" not found
ERROR: ChangeAcl: class "page_text" not found
ERROR: ChangeAcl: class "page_text" not found
ERROR: type name lookup of char8 failed
ERROR: ChangeAcl: class "page_loan_matrix" not found
ERROR: ChangeAcl: class "page_loan_matrix" not found
ERROR: ChangeAcl: class "page_loan_matrix" not found
ERROR: COPY command failed. Class passwd does not exist.
ERROR: parser: parse error at or near "greg"
ERROR: parser: parse error at or near "$100"
FATAL 1: Database chuck1 does not exist in pg_database
Thanks for your help. Everyone here has been very helpful!
On Mon, 31 May 1999, Michael A. Koerber SR wrote:
> I have had trouble on numerous occasions "undumping" a pg_dump. Below is
> a perl script that I use as a pipe for undumping...hope it helps
>
> .....pg_undump.....
> #!/usr/bin/perl -p
>
> # This script is a pipe that is used to break up PSQL dumps into pieces
> # that are more manageable by the postmaster. If there are too many
> # input lines, the memory used by the transaction block can easily
> # choke the machine.
>
> BEGIN { $MAXLINES = 1000; }
>
> # Does the current input line define the beginning of an input block?
> if (m/^COPY/) {
> # When a copy line is encountered grab the line for later use
> # and turn on the line counter;
> $copyline = $_;
> $cnt = 0;
> }
>
> # Does the current input line define the end of an input block?
> if (m{^\\\.}) {
> # We have just macthed the end of STDIN line. Set counter off
> undef $cnt;
> }
>
> # If we are in an input block and the count is at the max, "flush" the buffer
> # and setup for the next block.
> if (defined($cnt) and ($cnt > $MAXLINES) ) {
> $cnt = 0;
> print '\.', "\n";
> print $copyline;
> }
>
> $cnt++ if defined $cnt;
>