Re: mysqldiff-like utility for PG? - Mailing list pgsql-admin

From Robert Treat
Subject Re: mysqldiff-like utility for PG?
Date
Msg-id 1030054189.27270.117.camel@camel
Whole thread Raw
In response to Re: mysqldiff-like utility for PG?  (Kevin Brannen <kevinb@nurseamerica.net>)
List pgsql-admin
On Thu, 2002-08-22 at 16:16, Kevin Brannen wrote:
> Robert Treat wrote:
> > On Thu, 2002-08-22 at 14:08, Kevin Brannen wrote:
> >>I don't see how you can keep a production DB running in any other way.
> >>If you can, please let us know!  But once a schema is being used in
> >>production, and has a data in it, you can't just drop it and stuff a new
> >>schema in; it needs to be transformed.
> >
> >
> > Assuming you have maintenance windows for when you would be upgrading
> > your database, there's no reason you have to rule out a full drop/reload
> > of the database system.
>
> Fair enough--some people have circumstances which allow this, I don't.
> :-/   My maintanance windows are very small, and one day I will hit the
> multi-million row size, creating a physical impossibility to drop/reload
> in the time I have.  And I suspect this is not an uncommon problem. :-)
>

There are definitely instances where this wouldn't work (or at least
wouldn't be practical), though FWIW I run at least 1 million + entry
system and I can do a full drop/reload in 15 minutes with plenty of time
to spare.

> >
> > I am sure there are open source projects doing something similar to this
> > now (perhaps even the mentioned mysql utility?) that could give you a
> > jump start. If your doing this for 7.2.2, watch out for dropping
> > columns..
>
> Good advice, I'll look around before I do anything.  Yeh, the lack of
> "alter table T drop column ..." is a real pain.  If I write this tool,
> I'll probably assume that command exists, which means the sql won't be
> fully valid until PG7.3. :-(
>

Given 7.3 is right around the corner, this might be too big of a deal,
but if so the way we handle it in phpPgAdmin works pretty well. You can
use something like

assume mytable has fields 1,2,3.....n and I need to drop 2 and 3

BEGIN;
CREATE TABLE mytable_2112 AS SELECT "field1","fieldn" FROM "mytable";
DROP TABLE mytable;
CREATE TABLE "mytable" ("field1" int4 NOT NULL,"fieldn" int4 NOT NULL);
INSERT INTO "mytable" SELECT * FROM mytable_2112;
DROP TABLE mytable_2112;
COMMIT;

Robert Treat




pgsql-admin by date:

Previous
From: Kevin Brannen
Date:
Subject: Re: mysqldiff-like utility for PG?
Next
From: Bhuvan A
Date:
Subject: Preserving datatypes in dblink.