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.
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4767 (20100113) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4772 (20100114) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 4772 (20100114) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
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 |