Si usas EMS Manager te lo hace solito. EL EMS hace esto mismo que puso Mario pero graficamente con una flecha hacia arriba :D
EL EMS es gratis al menos una version *-------------------------------------------------------* *-Edwin Quijada *-Developer DataBase *-JQ Microsistemas *-Soporte PostgreSQL *-www.jqmicrosistemas.com *-809-849-8087 *-------------------------------------------------------* > From: [email protected] > To: [email protected]; [email protected] > CC: [email protected] > Subject: RE: [pgsql-es-ayuda] Cambiar orden de las columnas > Date: Thu, 14 Jan 2010 16:37:12 -0300 > > Este sería un ejemplo práctico de lo que quieres hacer: Cambiar el orden de > las columnas: > > > > > -- Crear una tabla temporal > > CREATE LOCAL TEMPORARY TABLE "foo0bmfgd" ( > "id" INTEGER, > "nombre" VARCHAR(100), > "descripcion" VARCHAR(500), > "archivo_bytea" BYTEA, > "archivo_oid" OID, > "mime" VARCHAR(100), > "size" DOUBLE PRECISION > ) WITH OIDS; > > --Copiar los datos de a table original a la table temporal > > INSERT INTO "foo0bmfgd" ("id", "nombre", "descripcion", "archivo_bytea", > "archivo_oid", "mime", "size") > SELECT "id", "nombre", "descripcion", "archivo_bytea", "archivo_oid", "mime", > "size" FROM "public"."foo"; > > -- Borrar la table original > > DROP TABLE "public"."foo"; > > -- Crear la nueva table con el orden de las columnas que deseas > > CREATE TABLE "public"."foo" ( > "id" SERIAL NOT NULL, > "nombre" VARCHAR(100), > "descripcion" VARCHAR(500), > "archivo_bytea" BYTEA, > "archivo_oid" OID, > "size" DOUBLE PRECISION, > "mime" VARCHAR(100), > CONSTRAINT "foo_pkey" PRIMARY KEY("id") > ) WITHOUT OIDS; > > SELECT setval('"public"."foo_id_seq"', 6, false); > > > -- Copiar los datos desde la table temporal ala table nueva > > INSERT INTO "public"."foo" ("id", "nombre", "descripcion", "archivo_bytea", > "archivo_oid", "size", "mime") > SELECT "id", "nombre", "descripcion", "archivo_bytea", "archivo_oid", "size", > "mime" FROM "foo0bmfgd"; > > > > > > Espero te sirva > > Mario Soto > > > > > > > > > -----Mensaje original----- > De: [email protected] > [mailto:[email protected]] En nombre de Simeó Reig > Enviado el: miércoles, 13 de enero de 2010 6:29 > Para: Jaime Casanova > CC: [email protected] > Asunto: Re: [pgsql-es-ayuda] Cambiar orden de las columnas > > > ----- Original Message ----- > >From: "Jaime Casanova" <jcasa...@xxxxxxxxxxxxx> > >wow!!! cuantas idioteces se encuentra uno en internet!!! > >nunca, repito, nunca hagas esto... > > Suerte que uno con los años se vuelve precavido, y esto añadido al sentido > comun de que si fuese viable ya lo habrían implantado los de pgadmin, me > hizo dudar y preguntar antes de nada. Realmente internet es, como todo, una > fuente de grandísimas cosas pero tambien de memeces impresionantes > > >dificilmente el pgadmin decide lo que postgres puede y no puede hacer ;) > >el verdadero problema es que la posicion fisica de la columna en disco > >es la misma que la posicion logica, asi que hacer el cambio en ese > > Seguro que es complicado, el motivo de cambiar de orden es simplemente pq > cuando añades un campo nuevo al diseño me gusta que se mantenga un orden y > me molesta un poquitín que se añada al final de la tabla. Es simplemente una > cuestión de estética al hacer el diseño de la BD > > >maneras "reales" de solucionar esto: > >1) crea una tabla temporal con el orden de las columnas que necesitas; > >2) usa pg_dump para hacer un respaldo de la base o quiza solo de la > >tabla y arregla el script a mano (incluidos los datos claro) > > Si, ya los había sopesado > > >3) crea una vista con el orden que quieres > > Umm, en este caso no me sirve mucho > > >4) modifica postgres agregando un campo a pg_attributes para guardar > >la posicion fisica de la columna, y envia el parche a > >[email protected] > > > Ya me gustaría ya tener el nivel necesario para hacerlo, se escapa de mis > posibilidades :-) > > > Gracias Jaime por todo > > Un saludo > > Simeó Reig > > > -- > TIP 1: para suscribirte y desuscribirte, visita > http://archives.postgresql.org/pgsql-es-ayuda > > > __________ Información de ESET NOD32 Antivirus, versión de la base de firmas > de virus 4766 (20100113) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > __________ Información de ESET NOD32 Antivirus, versión de la base de firmas > de virus 4767 (20100113) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > __________ Información de ESET NOD32 Antivirus, versión de la base de firmas > de virus 4772 (20100114) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > > __________ Información de ESET NOD32 Antivirus, versión de la base de firmas > de virus 4772 (20100114) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > -- > TIP 8: explain analyze es tu amigo _________________________________________________________________
