RE: Cambiar orden de las columnas

From: "Listas" <masc68(at)gmail(dot)com>
To: 'Simeó Reig' <simeo(at)grupoincofisa(dot)com>, "'Jaime Casanova'" <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Cambiar orden de las columnas
Date: 2010-01-14 19:37:12
Message-ID: 000d01ca9550$fc161b70$f4425250$@com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Simeó Reig
Enviado el: miércoles, 13 de enero de 2010 6:29
Para: Jaime Casanova
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Cambiar orden de las columnas

----- Original Message -----
>From: "Jaime Casanova" <jcasanov(at)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
>pgsql-hackers(at)postgresql(dot)org

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message William Diaz Pabón 2010-01-14 22:40:00 existe funcion trnasform para postgresql?
Previous Message Edwin Quijada 2010-01-14 18:03:55 RE: lanzar mensajes desde fucnion pgsql a fichero de texto