SQL - Inserccion de datos de una tabla a otra

 
Vista:

Inserccion de datos de una tabla a otra

Publicado por Juanito (1 intervención) el 18/03/2011 10:42:49
--Tengo esta tabla en la que tengo los datos insertados
CREATE TABLE RCLIENTES
(USUARIO VARCHAR (10) NOT NULL,
CONTRASENA VARCHAR(10),
NOMBRE VARCHAR(50),
APELLIDOS VARCHAR(50),
DIRECCION VARCHAR (50),
MAIL VARCHAR(50) UNIQUE NOT NULL,
PRIMARY KEY (USUARIO));

--Esta segunda tabla es donde tengo que migrar los datos anteriores
CREATE TABLE "CLIENTES"
( "IDCLIENTE" NUMBER(*,0),
"DIR" VARCHAR2(100 BYTE),
"EMAIL" VARCHAR2(50 BYTE),
"IDUSUARIO" NUMBER(*,0)
) ;

-Al insertar los datos RCLIENTES.usuario(varchar) a CLIENTES.idcliente(number) me dice tipo de datos incorrecto, he probado 50 formas distintas y no puedo lograrlo,agradeceria una ayuda, estoy en "oracle".
1 saludo y gracias.
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Inserccion de datos de una tabla a otra

Publicado por Leonardo Josué (1173 intervenciones) el 18/03/2011 15:26:01
Hola Juanito:

Me pregunto cuáles serán esas 50 formas diferentes que has tratado de hacer y que no te han funcionado... pues en el post no pones ninguna. Creo que todo el problema está en que tienes que convertir el campo usuario a número utilizando TO_NUMBER. La idea sería hacer algo como esto:

insert into clientes (idcliente, dir, email, idusuario) select to_number(usuario) as idcliente, direccion as dir, mail as email, to_number(usuario) as idusuario from rclientes

No supe qué valor poner en el campo idcliente, por lo que en el ejemplo le asigno el mismo valor que usuario. Haz algunas pruebas y nos comentas. Si continuas teniendo problemas te pido que publiques el código SQL que estás tratando de ejecutar para ver si podemos encontrar el error.

Saludos
Leo.
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

Inserccion de datos de una tabla a otra

Publicado por Javier (1 intervención) el 21/03/2011 17:28:48
Se pueden usar otros métodos como ALTER TABLE RCLIENTES MODIFY USUARIO NUMBER(*,0);
O intentarlo con TO_NUMBER(), pero no me están funcionando.
He probado el código de Leo y tampoco funciona...
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Inserccion de datos de una tabla a otra

Publicado por Leonardo Josué (1173 intervenciones) el 22/03/2011 20:52:30
Hola de nuevo compañeros:

Leí el comentario Javier en donde dice que ha probado el código que propongo pero que tampoco le funciona. Me gustaría que nos comentara qué error está marcando para poder hacer las correcciones pertinentes.

Aquí también cabe hacer otro comentario, yo estoy en el supuesto de que el campo RCLIENTES.usuario contienes SÓLO NÚMEROS, es decir que la función TO_NUMBER no debería de marcar error, ahora bien, quizás deberías por comenzar con hacer una revisión de tus datos para comprobar si en tu campo usuario no tienes algún registro que contenga caracteres que no sean números y que por lo tanto marque error al tratar de hacer la conversión... Lamentablemente ORACLE no tiene alguna función que haga esta conversión de manera natural, pero hay algunas implementaciones que les pueden servir. Chequen estas ligas:

http://www.ots.ac.cr/tech/node/87
http://www.techonthenet.com/oracle/questions/isnumeric.php
http://www.tsoracle.com/wparchives/2007/08/24/uso-de-expresiones-regulares-con-oracle/

Los tres muestran maneras distintas de poder determinar si una cadena es un número o no.

Saludos
Leo.
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