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

From: Lisibeth Troconis <lisibeth(dot)troconis(at)gmail(dot)com>
To: Adrian Misael Peña Montero <ampena(at)uci(dot)cu>
Cc: postgreSQL <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 13:55:20
Message-ID: CACpT28w6gUZ03e6YQ62vvbDfkcUs0fJXMbi-kHoBGCWJoyyS5g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Adrian Misael Peña Montero 2011-09-22 14:03:25 Re: Consulta sobre modificación de tipo en un campo
Previous Message Adrian Misael Peña Montero 2011-09-22 13:52:27 Re: Consulta sobre modificación de tipo en un campo