Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Importar datos con sqlldr

Estas en el tema de Importar datos con sqlldr en el foro de Oracle en Foros del Web. Hola, necesito importar datos desde un archivo de excel utilizando el sqlldr pero al momento de importar los datos necesito que automaticamente se este ingresando ...
  #1 (permalink)  
Antiguo 08/08/2008, 09:16
 
Fecha de Ingreso: enero-2008
Mensajes: 32
Antigüedad: 16 años, 10 meses
Puntos: 2
Importar datos con sqlldr

Hola, necesito importar datos desde un archivo de excel utilizando el sqlldr pero al momento de importar los datos necesito que automaticamente se este ingresando un codigo o id en cada registro automaticamente como lo puedo hacer?
  #2 (permalink)  
Antiguo 08/08/2008, 17:00
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Importar datos con sqlldr

Que Tal,

Una opción sería el crear un trigger en esa tabla que te inserte el id cada vez que se inserte un registro

create or replace
TRIGGER NOMBRE_TRIGGER BEFORE INSERT ON NOMBRE_TABLA
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
vvMaxim NUMBER(10);
BEGIN


SELECT COUNT(*) + 1
INTO vvMaxim
FROM nombre_tabla

:new.id_campo := vvMaxim;

END;
/

Saludos.
  #3 (permalink)  
Antiguo 09/08/2008, 19:54
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Importar datos con sqlldr

solo acotar un detalle de tu trigger, considerando que id_campo sea llave primaria (como deberia de serlo para un identificador)

si sacas el SELECT COUNT(*) + 1

vas a tener problemas cuando empieces a borrar informacion de la tabla, lo mejor es sacar el max

SELECT max(id_campo) + 1

aunque en mi opinion lo mejor es crearte una secuencia para identificadores
__________________
Blogzote.com :-) Mi blog
  #4 (permalink)  
Antiguo 11/08/2008, 09:24
 
Fecha de Ingreso: enero-2008
Mensajes: 32
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Importar datos con sqlldr

Buen dia

Gracias por responder a mi pregunta, solo que se me olvido mencionar que el id, no es un correlativo, sino que es un id fijo, por ejemplo: hay una tabla maestra de empleados, cada empleado por logica tiene su propio ID, entonces en una tabla de historial necesito importar desde un archivo de texto el trabajo que cada empleado realiza, el problema es que este registro lo hace un software pero no registra el ID del empleado sino solamente el trabajo o la informacion que cada empleado ha hecho, entonces cada vez que se importen estos datos necesito ir metiendo el ID de cada empleado... si tuvieran alguna idea les agradezco de antemano.... por cierto lo del trigger me parece muy bueno... ya habia visto un ejemplo similar pero con un ID correlativo... no se si se puede hacer como yo lo necisito...
  #5 (permalink)  
Antiguo 11/08/2008, 21:40
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Importar datos con sqlldr

pues segun entendi tu trigguer tendria que ir a buscar el id para ese empleado no? pero si tu informacion no trae ese ID como los buscarias? por nombre? lo mejor seria que tu informacion tuviera algun campo para poder indentificar al empleado
__________________
Blogzote.com :-) Mi blog
  #6 (permalink)  
Antiguo 14/08/2008, 15:39
 
Fecha de Ingreso: enero-2008
Mensajes: 32
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Importar datos con sqlldr

Gracias por tu ayuda... he estado leyendo y con tu aporte me he orientado bastante... con un trigger me ayudaria bastante solamente tengo que controlar otras cosas que tambien me estan dando problemas... uno de ellos es que al momento de importar los datos que se encuentran dentro del fichero de texto hacia la tabla de la BD me dice que el dato que estoy extraendo es de tipo caracter y debe de ser numerico porque asi esta declarado en la tabla de la BD...

Tambien tengo problemas con el campo fecha..., la fecha que se extrae viene con un formato de fecha, hora, minuto y segundo... pero no se como se debe hacer para que se importe con ese mismo formato hacia la tabla de la BD, en el campo de fecha de la tabla de la BD lo he declarado como DATE y tambien he probado como TIMESTAP pero siempre me da error por que el dato no es valido, si pudieras darme una idea de como solucionar estos dos problemas, gracias...
  #7 (permalink)  
Antiguo 14/08/2008, 15:55
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Importar datos con sqlldr

Que Tal,


Con el Primer campo, no se puede hacer mucho, ya que si es un caracter o deberías de cambiar el tipo de dato de la tabla o si es un dato númerico, pero en formato caracter, (algo como esto '10.25' ), solo bastaría con aplicar un to_number.

Por otra parte, para el problema que tienes con la fecha, solo bastaría con un tipo de dato DATE por parte de tu tabla, solo que al insertar la
fecha necesitas convertirla con el formato en el que viene.


Si tu fecha es '14/08/2008 04:50:25' entonces solo bastaría hacer la conversión con el formato adecuado TO_DATE('14/08/2008 04:50:25','DD/MM/YYYY HH:MM:SS') de esta forma tu fecha se guardaría exactamente igual en la base de datos.


Espero te sea de utilidad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:02.