Oracle - Necesito importar archivo txt

 
Vista:

Necesito importar archivo txt

Publicado por Sheyla (3 intervenciones) el 31/10/2006 19:57:33
Miren les tengo una consulta, estoy intentando importar a una de mis tablas de oracle, un archivo de texto en donde tengo datos separados con tabulaciones.

Es un trabajo urgente que me han dejado, por favor cualquier informacion de como hacer esta tarea hacermela llegar por el foro.

Gracias, a todos por adelantado.
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

RE:Necesito importar archivo txt

Publicado por Ricardo (84 intervenciones) el 31/10/2006 20:12:41
Sheila:

Antes que nada, te recomendaria pasar el archivo separado por tabulaciones a uno separado por punto y coma. (guardalo como datos.txt).

Create una tabla del tipo:

create table datos
(columna1 number(8)
,columna2 varchar2(80));

Luego guarda en datos.ctl lo siguiente:

Load DATA
truncate
INTO TABLE datos
FIELDS TERMINATED BY ";"
( columna1
,columna1)

Luego desde linea de comandos, ejecuta el siguiente comando:

sqlldr control=datos.ctl data=datos.txt discard=datos.dis bad=datos.bad log=datos.log

Con eso ya deberias tener la tabla cargada, luego te manejarías desde dentro de Oracle.

Nota: puede ser que dependiendo del sistema operativo que tengas, en lugar de sqlldr el comando sea sqlload o sqlldr80 o similar...

Espero haber podido ayudarte.

saludos
Ricardo.
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

RE:Necesito importar archivo txt

Publicado por Sheyla (3 intervenciones) el 31/10/2006 21:59:42
Gracias Ricardo por la informacion.

pero una cosa mas este mismo procedimiento seria si manejo mi oracle server es remoto. ¿en donde debo almacenar mi archivo txt en mi pc o en la pc del servidor oracle?.

Gracias, un beso.
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

RE:Necesito importar archivo txt

Publicado por Ricardo (84 intervenciones) el 01/11/2006 21:28:24
Sheyla:

Si te estás manejando con un server NT o 2000 como servidor de base de datos, y
corres en ese ambiente, deberías colocar por ejemplo:

sqlldr control=c:\tmp\datos.ctl data=c:\tmp\datos.txt discard=c:\tmp\datos.dis bad=c:\tmp\datos.bad log=c:\tmp\datos.log

Suerte.
Ricardo.
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

RE:Necesito importar archivo txt

Publicado por Alejandro César (189 intervenciones) el 03/11/2006 19:15:37
Una solución no tan elegante puede ser usando Access y ODBC. Cargá el archivo de texto en Access, vinculá la tabla Oracle que recibirá los datos y luego hacés una consulta para que los agregue ahí.

Salu2
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

RE:Necesito importar archivo txt

Publicado por Ricardo (84 intervenciones) el 03/11/2006 21:29:14
Otra forma de hacerlo, sin loader ni nada sería usando la utilidad "UTL_FILE". No quise ponerla en principio pues me parecía más simple la otra solucion...

Aqui va un ejemplo:

--------------------------------------------------------------------------------------------------------------------
Declare
idarch UTL_FILE.FILE_TYPE;
lineatxt varchar2(100);
mensajerr varchar2(100);
l_error EXCEPTION;
Begin
begin
idarch := UTL_FILE.FOPEN('c:\tmp', 'arch.txt', 'r');
exception
when others then
mensajerr := 'Error al abrir El UTL_FILE';
raise l_error;
end;

Loop
Begin
Utl_file.Get_line(idarch,lineatxt);
Exception
When no_data_found then
UTL_FILE.FCLOSE(idarch);
End;
End loop;
Exception
When l_error then
UTL_FILE.FCLOSE(idarch);
raise_application_error(-20003, mensajerr);
When others then
UTL_FILE.FCLOSE(idarch);
End;
/
--------------------------------------------------------------------------------------------------------------------

Tenés que garantizarte que tengas permiso de leer con UTL_FILE en "c:\tmp" o cualquier otro que elijas. La lista de directorios con permiso de leer con UTL_FILE se encuentra en un parametro de base llamado "UTL_FILE_DIR". Si está en * deberías poder leer de cualquier lado...

Consulta por las dudas con tu DBA...

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

RE:Necesito importar archivo txt

Publicado por Alejandro César (189 intervenciones) el 03/11/2006 19:21:03
Aunque si la necesidad de esta carga será periódica también podés usar Tablas Externas (un archivo de texto ubicado en el sistema de archivos del servidor de bd y cuya estructura es definida con un DDL, lo que permite hacer referencia al archio directamente con DML desde la base de datos como si el mismo fuera una tabla) que es una característica nueva en la release 9i de la base de datos Oracle. En el sitio asktom.oracle.com podrás encontrar ayuda sobre este particular.

Salu2.
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

RE:Necesito importar archivo txt

Publicado por Jose manuel (1 intervención) el 19/01/2007 09:58:24
He leido vuestras explicaciones y me he quedado con la idea de pasar el archivo txt a access. Estos dias de atras he tenido q hacer algo de esto y use el UTL pero el archivo tenia dos millones de registros y daba problemas de tablespace pero aun kitando ese problema , para 30000 registros estuvo una hora, vamos q al final lo desechamos y hemos hecho para menos registros.
Me gustaria xq no recuerdo mucho como hacerlo con excel para ver si en tiempos es mejor.
El problema q tenemos es q en produccion tenemos 40 millones de registros y hay q lanzar un proceso antiguo de cobol para ver los resultados y comparar con nuestro proceso q hemos modernizado en PL/SQL pero para ellos tenemos q tener en desarrollo esos 40 millones para luego comparar los resultados, no se si m he explicado bien. Como no era imposible tantos registros, los reducimos a 2 millones pero ya os he contado lo q paso y hemos tenido q reducir casos para tener menso registros y no sabemos si habremos cometido algun fallo.
despues de tal chapa, ultima, en resumen, si m podeis explicar los pasos de pasar un txt a un access y luego la select os lo agradezco.
Salu2 a todos.
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

RE:Necesito importar archivo txt

Publicado por Diego (1 intervención) el 17/03/2014 00:39:36
Hola, que es mas rapido UTL_FILE o tabla externa?
En el caso de tabla externa se puede procesar archivos en donde el nombre fuera fijo y este concatenado con un nombre variable ej. archivo_aaaammdd.
Gracias!
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