RE: [pgsql-es-ayuda] Consulta sobre modificación de tipo en un campo

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <ampena(at)uci(dot)cu>, <lisibeth(dot)troconis(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: [pgsql-es-ayuda] Consulta sobre modificación de tipo en un campo
Date: 2011-09-22 19:47:42
Message-ID: BAY155-W6411577459A4942D6B6CD5E30C0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Si se puede usa la USING para que cambie los datos de varchar a bigint

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas

*-Soporte PostgreSQL

*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

> Date: Thu, 22 Sep 2011 10:03:25 -0400
> From: ampena(at)uci(dot)cu
> To: lisibeth(dot)troconis(at)gmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] Consulta sobre modificación de tipo en un campo
>
> La otra opción que se me ocurre es que le añadas a tu tabla una columna temporal de tipo BIGINT y programes una función que te inserte en esa columna el valor de la columna a la que quieres hacerle el ALTER, tendrías que hacer un typecast para convertir el VARCHAR a BIGINT. Posteriormente solo te quedaría borrar la columna VARCHAR y renombrar la temporal para que quede como deseas.
>
> Saludos
>
> ----- Mensaje original -----
> De: "Lisibeth Troconis" <lisibeth(dot)troconis(at)gmail(dot)com>
> Para: "Adrian Misael Peña Montero" <ampena(at)uci(dot)cu>
> CC: "postgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
> Enviados: Jueves, 22 de Septiembre 2011 9:25:20 GMT -04:30 Caracas
> Asunto: Re: [pgsql-es-ayuda] Consulta sobre modificación de tipo en un campo
>
> en la segunda no es posible esa base de datos esta en producción, el campo que estoy adicionando no, y allí si tengo libertad de hacerlo, es muy muy seguro que no puedo hacer el cambio????
>
>
> El 22 de septiembre de 2011 09:22, Adrian Misael Peña Montero < ampena(at)uci(dot)cu > escribió:
>
>
> El ALTER no lo puede hacer de VARCHAR a BIGINT, pero de BIGINT a VARCHAR sí, valora el costo de realizar el ALTER en la segunda tabla que mencionas.
>
> Saludos
>
> ----- Mensaje original -----
> De: "Lisibeth Troconis" < lisibeth(dot)troconis(at)gmail(dot)com >
> Para: "postgreSQL" < pgsql-es-ayuda(at)postgresql(dot)org >
> Enviados: Jueves, 22 de Septiembre 2011 9:16:04 GMT -04:30 Caracas
> Asunto: [pgsql-es-ayuda] Consulta sobre modificación de tipo en un campo
>
>
>
>
> Saludos!
>
>
> Necesito por favor saber si puedo cambiar un tipo de dato character varchar(50) a bigint sin perder los datos que tengo
>
>
>
>
> ALTER TABLE mensajes ALTER COLUMN prefijo TYPE bigint
>
>
>
>
> Poniéndolos en contexto tengo una tabla mensaje que guarda un número telefónico formato internacional ejemplo 58261xxxxxxx , por razones que siempre pasa al momento de diseñar la base de datos no se pensó que en algún momento se quisiera realizar la consulta sobre esta tabla, sobre el prefijo, osea no interesa el número completo, realizar esta consulta sobre la tabla resulta muy costosa, pues posee demasiados registros, la opción que pensamos fue crear un campo adicional y realizar el siguiente query
>
>
> update mensaje set prefijo=
> (select num from Prefijo where mensaje.dest like num || '%' limit 1)
> where mensaje.id in (
> select m.id from mensaje m where m.refproveedor is not null and m.prefijo is null
> limit 5000
> )
>
>
> se realizo el cambio en un script por segmentos de 5000 mil registros cada vez
>
>
> pero pequeño detalle, al agregar la columna la agregamos como character varchar(50) pues parecía lo lógico ya que en la tabla mensaje el numero se almacena en un character varchar(255), pero resulta que tenemos otra tabla donde se tienen los prefijos y en esta tabla el prefijo es un bitint
>
>
> bueno el punto es que por los momentos quiero convertir este campo, para luego hacer el indice y realizar comparaciones contra esta otra tabla sin tener muchos líos
>
>
> La pregunta en concreto es esa, como realizar el cambio sin perder los datos, y cualquier otro aporte que me de luz al respecto de lo que deseo hacer
>
>
>
>
> muchas gracias! espero respuestas =)
>
>
>
>
> --
> Lisibeth Troconis
>
>
>
>
> --
> Lisibeth Troconis
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodolfo Paparás 2011-09-22 19:49:14 Script de inicio de postgresql 9
Previous Message Edwin Quijada 2011-09-22 19:42:48 RE: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Sobre la Documentación