pg_dump & table space
Hi,
is there a way to dump an entire database which has a specific table space
without having in the sql file any reference to the tablespace? This can be
useful when moving the database from one machine to another (that does not use
the tablespace). Any way to achieve that with pg_dump?
Thanks,
Luca
Luca Ferrari wrote:
Hi,
is there a way to dump an entire database which has a specific table space
without having in the sql file any reference to the tablespace? This can be
useful when moving the database from one machine to another (that does not use
the tablespace). Any way to achieve that with pg_dump?
dump in ascii format, edit the resultant SQL file and remove any
references to the tablespace. this could probably be done with a perl
or sed script if the file is too large for a conventional text editor.
John R Pierce wrote:
Luca Ferrari wrote:
Hi,
is there a way to dump an entire database which has a specific table
space without having in the sql file any reference to the tablespace?
This can be useful when moving the database from one machine to
another (that does not use the tablespace). Any way to achieve that
with pg_dump?dump in ascii format, edit the resultant SQL file and remove any
references to the tablespace. this could probably be done with a
perl or sed script if the file is too large for a conventional text
editor.
oh, dump the schema only first, edit that, then dump the data only to a
seperate dumpfile, thats probably simplest.
Luca Ferrari <fluca1978@infinito.it> writes:
is there a way to dump an entire database which has a specific table space
without having in the sql file any reference to the tablespace? This can be
useful when moving the database from one machine to another (that does not use
the tablespace). Any way to achieve that with pg_dump?
Recent versions have
--no-tablespaces do not dump tablespace assignments
However, this is really just cosmetic, as the dump is set up like this:
SET default_tablespace = whatever;
CREATE TABLE whichever(...);
If tablespace 'whatever' doesn't exist, you'll get an error on the SET
but the CREATE will succeed anyway. (I guess this only works cleanly
if the destination machine has *none* of the source's tablespaces,
else things might get assigned to unexpected tablespaces. But it's
definitely possible to restore a dump without having the same
tablespaces.)
regards, tom lane
Tom Lane wrote:
However, this is really just cosmetic, as the dump is set up like this:
SET default_tablespace = whatever;
CREATE TABLE whichever(...);If tablespace 'whatever' doesn't exist, you'll get an error on the SET
but the CREATE will succeed anyway. (I guess this only works cleanly
if the destination machine has *none* of the source's tablespaces,
else things might get assigned to unexpected tablespaces. But it's
definitely possible to restore a dump without having the same
tablespaces.)
Maybe it would be better if the dump has a RESET default_tablespace
before the SET.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support