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