Como puedo hacer para hacer cambios en el tipo de dato de una tabla con información?
Hola,
Podria alguien darme un tip. Exporte algunas tablas desde Access hacia Oracle, sin embargo una vez que las tablas ya estan en Oracle, el tipo de datos de todas las columnas es varchar2 y necesito redefinir algunas de ellas a tipo númerico. Trate de hacer lo siguiente:
SQL> ALTER TABLE EDO MODIFY ID_EDO NUMBER(2);
ALTER TABLE EDO MODIFY ID_EDO NUMBER(2)
*
ERROR at line 1:
column to be modified must be empty to change datatype
Lo cual entendi, la tabla debe estar vacia para realizar cambios de tipo.
Existe alguna otra forma de mantener la información???
Gracias
Podria alguien darme un tip. Exporte algunas tablas desde Access hacia Oracle, sin embargo una vez que las tablas ya estan en Oracle, el tipo de datos de todas las columnas es varchar2 y necesito redefinir algunas de ellas a tipo númerico. Trate de hacer lo siguiente:
SQL> ALTER TABLE EDO MODIFY ID_EDO NUMBER(2);
ALTER TABLE EDO MODIFY ID_EDO NUMBER(2)
*
ERROR at line 1:
column to be modified must be empty to change datatype
Lo cual entendi, la tabla debe estar vacia para realizar cambios de tipo.
Existe alguna otra forma de mantener la información???
Gracias
Puedes crear la nueva tabla con columnas number y, mediante una instruccion cargar los datos convirtiendolos en la nueva tabla con la instruccion NVL(TO_NUMBER(CAMPO_VARCHAR2),0) de una vez para cargar con cero los campos nulos (si es necesario)
Prueba con esto:
ALTER TABLE EDO ADD ID_EDO_2 NUMBER(2);
UPDATE EDO
SET ID_EDO_2=TO_NUMBER(ID_EDO);
ALTER TABLE EDO DROP COLUMN ID_EDO;
ALTER TABLE EDO ADD ID_EDO NUMBER(2);
UPDATE EDO
SET ID_EDO=ID_EDO2;
ALTER TABLE EDO DROP COLUMN ID_EDO2;
La opción DROP COLUMN sólo funciona a partir de la versión 8i
ALTER TABLE EDO ADD ID_EDO_2 NUMBER(2);
UPDATE EDO
SET ID_EDO_2=TO_NUMBER(ID_EDO);
ALTER TABLE EDO DROP COLUMN ID_EDO;
ALTER TABLE EDO ADD ID_EDO NUMBER(2);
UPDATE EDO
SET ID_EDO=ID_EDO2;
ALTER TABLE EDO DROP COLUMN ID_EDO2;
La opción DROP COLUMN sólo funciona a partir de la versión 8i
