PostgreSQL - Cambiar tipo y tamaño en cambo de tabla

 
Vista:

Cambiar tipo y tamaño en cambo de tabla

Publicado por pablo_dante (3 intervenciones) el 14/01/2020 16:19:11
Hola foro, buenos día.
Tengo un inconveniente y necesito un poco de ayuda puesto que no soy muy bueno en esto. La cual voy a agradecer.
En PostgreSQL tengo una tabla donde en uno de sus campos guardo un solo valor un 1 o un 2 nada más; el mismo está definido como "character varying (255)" y ncesito cambiarlo a "character (1)".
Intenté desde el PgAdmin III hacerlo con la siguiente sentencia de SQL:

"alter table hlcabece alter column hlcasexope TYPE character(1);"

Y el resultado es el siguiente:
ERROR: el valor es demasiado largo para el tipo character(1)
********** Error **********
ERROR: el valor es demasiado largo para el tipo character(1)
SQL state: 22001

Existe otra forma!!?
O no se puede en realidad, digo por que si bien se guarda un caracter por ahí el tipo definido del campo con datos no permite hacer el Alter Column... como deseo!!?

Por favor si alguien puede guiarme o darme una mano sería de una gran ayuda.
Muchas gracias y un saludo cordial.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cambiar tipo y tamaño en cambo de tabla

Publicado por martin (121 intervenciones) el 15/01/2020 00:02:28
Creo que tenes que usar 'USING', haciendo el cast o lo que tengas que hacer para que sea equivalente el cambio algo como:

alter table hlcabece alter column hlcasexope TYPE character(1) USING LEFT(hlcasexope,1)::character;

Algo así, es como que tenes que ajustar el dato existente al nuevo tipo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Cambiar tipo y tamaño en cambo de tabla

Publicado por pablo_dante (1 intervención) el 15/01/2020 17:16:14
Hola Martín buen día.
Te comento lo pude cambiar al tipo de dato, pero antes tuve que revisar los datos que tenía el campo y me encontré con los siguiente...
en algunos casos, y esto es porque así venía desde el origen del dato;. el valor del mismo era HLCASEXOPE=' 2' y en otros HLCASEXOPE='2'. Entonces, para el primer caso no me permitía cambiar el tipo de dato por los espacios en blanco.
Bien...
Lo que hice es un SET del campo y ponerlo como en el segundo caso (HLCASEXOPE='2') de esta forma pude aplicar la siguiente sentencia:
alter table hlcabece alter column hlcasexope set data type character(1); y así pude efectuar la modificación.

Y, con la forma que me indicás en tú respuesta también hubiera cambiado el tipo de dato sacando los espacios en blanco que se guardaban como dato.

De todas formas tengo que revisar los procedimientos que hacen el insert en la tabla y formatear el dato cuando llega antes de hacer commit.

Otra consulta....
Es posible me des consejos para armar un SP o Triger en Postgresql que efectue Insert y Update en un volcado de datos de una misma tabla que se encuentra en diferentes servidores !!!??? (es largo de explicar)

Muchas gracias
Un saludo cordial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar tipo y tamaño en cambo de tabla

Publicado por martin flores (121 intervenciones) el 16/01/2020 01:20:52
Si, con dblink, arranca por ahi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar tipo y tamaño en cambo de tabla

Publicado por pablo_dante (3 intervenciones) el 16/01/2020 12:19:02
Buen día Martín.
Ya intenté con dblink como me indicás.
El problema son los permisos no estoy autorizado desde mi terminal de trabajo poder usar dblink.
Por eso quería armar algo en SQL. Pero como no soy bueno en eso me cuesta.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar tipo y tamaño en cambo de tabla

Publicado por martin flores (121 intervenciones) el 16/01/2020 22:58:44
No entiendo, habla con el admin del otro servidor, te puede habilitar un usuario a una única view etc, la otra es hacer procesos bach, lo ideal es por CSV y con COPY, igual al no tener idea de cuales son los requerimientos no puedo ayudarte mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar tipo y tamaño en cambo de tabla

Publicado por Pablo_Dante (3 intervenciones) el 20/01/2020 17:35:03
Buen día Martín.
Te paso a explicar un poco lo que quiero hacer.
Primero, hablé con los Administradores y me negaron los permisos.
Segundo, para comprender lo que se debe hacer te paso a explicar como está el ambiente definido. Tenemos 2 BDs una es Pre-Producción y la otra en Producción. Bien ambas bases están en diferentes servidores. Las dos en PostgreSQL porsupuesto.
Lo que se actualiza primero desde la aplicación o sistema es Pre-Producción y en determinado momento; se copia a Producción (se actuliza). Este vuelco, se hace fuera de hora.
Como los administradores; no sé por qué; no puede copiar algunas tablas hace la copia de todas las tablas de la BD.
Según ellos si copian las tablas que le indicamos; dicen no sé; que se pieden los índices de la Claves Primarias... !!???
Entonces la idea es crear un SP o funciones que:
Hagan Insert de datos nuevos y Update de datos existentes si fuese necesario sino queda todo como está.
Por eso te preguntaba si se puede actualizar y modificar registros en BDs iguales pero que corren en diferentes servidores.
Te agredesco tu respuesta
Un saludo cordial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar