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: amp...@uci.cu
> To: lisibeth.troco...@gmail.com
> CC: pgsql-es-ayuda@postgresql.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.troco...@gmail.com>
> Para: "Adrian Misael Peña Montero" <amp...@uci.cu>
> CC: "postgreSQL" <pgsql-es-ayuda@postgresql.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 < amp...@uci.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.troco...@gmail.com > 
> Para: "postgreSQL" < pgsql-es-ayuda@postgresql.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@postgresql.org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
                                          

Responder a