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

Importar datos a Tabla Oracle

Estas en el tema de Importar datos a Tabla Oracle en el foro de Oracle en Foros del Web. Hola a todos; quisiera pedirles que me ayuden en lo siguiente : Necesito importar unos datos que se encuentran en un archivo (puede ser texto ...
  #1 (permalink)  
Antiguo 01/09/2005, 09:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Pregunta Importar datos a Tabla Oracle

Hola a todos; quisiera pedirles que me ayuden en lo siguiente :

Necesito importar unos datos que se encuentran en un archivo (puede ser texto o excel); a una tabla en Oracle. Y no sè como hacer esto.

Les agradezco mucho su ayuda.


Saludos
  #2 (permalink)  
Antiguo 01/09/2005, 11:19
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
LOAD DATA
INFILE *
INTO TABLE aqui_la_tabla
APPEND
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED '"'
TRAILING NULLCOLS
(nombre, apellido, nacimiento date(10) 'MM/DD/YYYY')
BEGINDATA
JUAN JOSE|MENDEZ|15/08/1970
MARIA|HERNANDEZ|30/06/1945

EN DONDE:
Aqui_la_tabla: es la tabla donde deseas importar los datos.
nombre,apellido, nacimiento: los campos que vas a insertar.

este archivo lo guardas con una extension CTL y luego desde <oracle_home>bin tecleas lo siguiente:

sqlldr miusuario/mipasword@mibase personas.ctl rows=10 errors=30000

en donde:
miusuario: Usuario de la Instancia
mipassword: Password asignado
mibase: Nombre de la base de Datos que estas utilizando
personas.ctl: nombre que le diste al archivo que antes era .txt
rows=10 : Significa que cada 10 registros ira haciendo COMMIT
errors=30000 : Significa el numero de errores que te puede soportar

Esto te generara dos archivos... uno .log y uno .bad ... El primero te muestra si se migraron bien o no los datos y el segundo te muestra los archivos que no fueron insertados en la base de datos y te muestra ademas cual fue el error.

NOTA: En este caso los archivos los tengo separados por "|"... si tu los tienes separados por "," o por un tabulador u otro caracter especial tienes que decirle en la parte FIELDS TERMINATED BY '|' OPTIONALLY
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 01/09/2005, 14:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Gracias, voy a intentarlo; pero ¿No habra otra forma mas simple como en SQL ?

Pero igual Muchas Gracias por responder.
  #4 (permalink)  
Antiguo 01/09/2005, 14:15
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Cualquier problema manda un MP
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #5 (permalink)  
Antiguo 09/09/2005, 09:58
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años, 1 mes
Puntos: 0
Un favor..... y donde se guarda ese archivo txt o xls en que directorio??
__________________
Mi blog
  #6 (permalink)  
Antiguo 09/09/2005, 10:44
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
en cualquier carpeta de tu Pc que tenga; lo importante es que tengas el path al sqlldr
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #7 (permalink)  
Antiguo 09/09/2005, 11:04
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años, 1 mes
Puntos: 0
No me ubico en la parte del <oracle_home>bin (soy novato tovia :D )
__________________
Mi blog
  #8 (permalink)  
Antiguo 03/04/2007, 04:43
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Re: Importar datos a Tabla Oracle

Subo este tópic.

Cita:
Iniciado por Linterns Ver Mensaje
LOAD DATA
INFILE *
INTO TABLE aqui_la_tabla
APPEND
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED '"'
TRAILING NULLCOLS
(nombre, apellido, nacimiento date(10) 'MM/DD/YYYY')
BEGINDATA
JUAN JOSE|MENDEZ|15/08/1970
MARIA|HERNANDEZ|30/06/1945

EN DONDE:
Aqui_la_tabla: es la tabla donde deseas importar los datos.
nombre,apellido, nacimiento: los campos que vas a insertar.

este archivo lo guardas con una extension CTL y luego desde <oracle_home>bin tecleas lo siguiente:

sqlldr miusuario/mipasword@mibase personas.ctl rows=10 errors=30000

en donde:
miusuario: Usuario de la Instancia
mipassword: Password asignado
mibase: Nombre de la base de Datos que estas utilizando
personas.ctl: nombre que le diste al archivo que antes era .txt
rows=10 : Significa que cada 10 registros ira haciendo COMMIT
errors=30000 : Significa el numero de errores que te puede soportar

Esto te generara dos archivos... uno .log y uno .bad ... El primero te muestra si se migraron bien o no los datos y el segundo te muestra los archivos que no fueron insertados en la base de datos y te muestra ademas cual fue el error.

NOTA: En este caso los archivos los tengo separados por "|"... si tu los tienes separados por "," o por un tabulador u otro caracter especial tienes que decirle en la parte FIELDS TERMINATED BY '|' OPTIONALLY
Hola, tengo el mismo problema que resolver. Considero muy útil dicho código.

Pero me gustaría saber cuál sería la mejor forma para realizar dichas acciones (y si a día de hoy no habrá cambiado en nuevas versiones del Oracle), a través de una aplicación web asp.net. Me imagino que la primera parte seguiría igual, ¿pero y la segunda? ¿Tendría que ejecutar el <oracle_home>bin? ¿No se puede realizar desde sentencias SQL?

En resumen, lo que quiero es importar unas tablas (que vendrán en formato texto) a Oracle, y que lo haga una aplicación web conectada a la base de datos: ¿no se puede cargar directamente sin crear el fichero de control?. Ignoro si dichas sentencias se pueden utilizar sin más para mi propósito, o si con el paso del tiempo (han pasado ya dos años desde que se abrió este tópic) ha cambiado algo.

Un saludo y gracias

Última edición por un_tio; 03/04/2007 a las 05:07
  #9 (permalink)  
Antiguo 03/04/2007, 08:22
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Re: Importar datos a Tabla Oracle

La forma de importar y exportar sigue siendo la misma; y no es necesario que te pongas en el oracle_home\bin precisamente lo que si es que el la ruta (path) se encuentre dicho subdirectorio.

Si quieres obviar el log definitivamente lo puedes hacer aunque no es recomendable ya que es una forma de ver si la data se importo o no correctamente.

A traves de PHP, ASP u algun otro aplicativo tambien puedes importar data aunque por mi parte no lo recomiendo ya que no te queda una constancia exacta de las transacciones realizadas. Dichos metodos son realmente creados por los usuarios realizando insert directamente a las tablas
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #10 (permalink)  
Antiguo 03/04/2007, 11:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Re: Importar datos a Tabla Oracle

Ok, gracias.

Quedaría otro tema: ¿Y si quieres realizar una "adaptación" de los datos antes de introducirlos en tu tabla?

Es decir, que no sea una importación directa, sino que a lo mejor quieras antes, por ejemplo, añadir 0's delante a determinados datos o transformar en números otros.

¿Cuál sería el mejor método (resumiendo: para importar datos de un fichero a Oracle, pasando por una transformación a algunas de sus columnas)?

Se me ocurre realizar una carga con el método del sql loader, y meterlo en una tabla temporal, para de ahí, mediante pl/sql o desde el aplicativo web (asp.net), reinsertarlo en la tabla en la que deba ir. ¿Es éste el mejor método?

Gracias,

saludos.
  #11 (permalink)  
Antiguo 03/04/2007, 11:30
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: Importar datos a Tabla Oracle

olvidate de complicarte la vida con algo tan sencillo, utiliza una tabla externa, aqui checa como se realizan

http://www.blogzote.com/2007/01/15/t...nas-en-oracle/
__________________
Blogzote.com :-) Mi blog
  #12 (permalink)  
Antiguo 15/11/2007, 03:06
 
Fecha de Ingreso: noviembre-2007
Mensajes: 21
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Importar datos a Tabla Oracle

Hola,

He leído todos los comentarios y creía que lo tenía, pero resulta que no se me guarda nada en la tabla, sino que se me van todos al .bad...a qué se debe??
Mi código es el siguiente:

load data infile 'derivado_interes_hipotetico.txt'
into table derivado_interes_hipotetico
fields terminated by ";" optionally enclosed by '"'
(ID_DERIVADO_IH,ID_RELACION_C,NOMINAL_IH,FECHA_INI CIO_IH,FECHA_FIN_IH,INDICE,REVISION,LIQUIDACION,AM ORTIZACION_IH)

Y tengo este archivo .ctl guardado en el bin, al igual que el .txt ¿Alguien puede ayudarme?
Por cierto, tb traté de poner INFILE * pero el error era el mismo...

MUCHAS GRACIAS!!!

Antonio.
  #13 (permalink)  
Antiguo 20/11/2007, 07:20
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Importar datos a Tabla Oracle

Que es lo que aparece en el .log ? Copia por favor el contenido aqui.

Y por seguridad, pon la ruta entera en el infile .... '/../../derivado_interes_hipotetico.txt'

y cuando ejecutes el sqlldr has lo mismo para el file de control.

sqlldr USERID=scott/tiger CONTROL=/../../ubic_file_control
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:00.