Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Oracle (http://www.forosdelweb.com/f100/)
-   -   Como importar desde un archivo de texto a oracle 10g (http://www.forosdelweb.com/f100/como-importar-desde-archivo-texto-oracle-10g-548134/)

Destroyer 14/01/2008 16:12

Como importar desde un archivo de texto a oracle 10g
 
Hola :-)

En mi maquina tengo instalado el Oracle database 10g XE y necesito crear una interfaz entre un archivo de texto y la base de datos en oracle.

El problema es que tengo un software que hace una recopilación de datos y estos datos los almacena en .txt o .xls estoy tratando de desarrollar una base de datos en oracle 10g pero necesito crear una interfaz con dichos archivos para que la info se importe a las tablas en la base de datos, espero que me puedan ayudar se los voy a agradecer mucho.

jsanlucas 14/01/2008 21:26

Re: Como importar desde un archivo de texto a oracle 10g
 
Cita:

Iniciado por Destroyer (Mensaje 2248342)
Hola :-)

En mi maquina tengo instalado el Oracle database 10g XE y necesito crear una interfaz entre un archivo de texto y la base de datos en oracle.

El problema es que tengo un software que hace una recopilación de datos y estos datos los almacena en .txt o .xls estoy tratando de desarrollar una base de datos en oracle 10g pero necesito crear una interfaz con dichos archivos para que la info se importe a las tablas en la base de datos, espero que me puedan ayudar se los voy a agradecer mucho.


No te sirve el programa SQL*Loader?
sqlload usuario/palabra_clave CONTROL=fichero_control, DATA=fichero_datos
A mi me funcionó.

jsanlucas 14/01/2008 21:35

Re: Como importar desde un archivo de texto a oracle 10g
 
No te sirve el programa SQL*Loader?
sqlload usuario/palabra_clave CONTROL=fichero_control, DATA=fichero_datos
A mi me funcionó.

kikolice 14/01/2008 23:39

Re: Como importar desde un archivo de texto a oracle 10g
 
tambien puedes usar utl_file o tablas externas segun sea tu necesidad

Destroyer 15/01/2008 08:26

Re: Como importar desde un archivo de texto a oracle 10g
 
Antes que nada les agradezco por responder a mi pregunta... :-) se me fue por alto decir que aun soy novato en oracle, aún estoy empezando, pero he leido muchos tutoriales y he estado prácticando, le agradezco las soluciones que me han dado, pero podrían decirme como ejecuto estas aplicaciones o en donde?

jc3000 15/01/2008 09:38

Re: Como importar desde un archivo de texto a oracle 10g
 
Entra en www.google.es y como criterios de búsqueda pon UTL_FILE y SQL LOADER.

Ya verás como encuentras mogollón de datos sobre estas "aplicaciones"

Ya nos contarás

Destroyer 15/01/2008 09:55

Re: Como importar desde un archivo de texto a oracle 10g
 
Gracias jc3000 acabo de encontrar un poco de info en google hacerca de utilizar una archivo carga.ctl y mediante el SQL*loader en estos momentos estoy revisando la información encontrada, voy a ver hasta donde puedo llegar con esto y si tengo alguna duda se los comunicare. Gracias!!!

jc3000 15/01/2008 17:00

Re: Como importar desde un archivo de texto a oracle 10g
 
Ok, aquí estamos para aclarar tus dudas.

Destroyer 22/01/2008 15:52

Re: Como importar desde un archivo de texto a oracle 10g
 
Hola a todos, he tenido problemas con el sql loader, me esta dando un error -350 es un error de sintaxis... a parte dice que se ha encontrado palabra clave.

Lo que estoy tratando de hacer es importar los datos que se encuentran en un archivo de texto a una tabla creada en la base de datos... el archivo que contiene los datos esta compuesto por 11 campos, el primer campo es de tipo fecha y el resto son numéricos. La estructura del archivo de control es la siguiente:

LOAD DATA
INFILE '20080101.txt'
APPEND INTO TABLE Trinidad
FIELDS TERMINATED BY'"'
(Date/Time
Temperature [°C]
Global Radiation [W/m²]
Relative Humidity [% RH]
Precipitation [mm]
Wind Speed [km/h]
Leaf Wetness [U]
Wind Direction [°]
Battery Voltage [V]
Incoming RF Level [µV]
Outgoing RF Level [µV]
Solar Cell [])

el archivo de control se llama carga.bat espero sus respuestas... gracias.

Linterns 26/01/2008 22:33

Re: Como importar desde un archivo de texto a oracle 10g
 
Cita:

Iniciado por Destroyer (Mensaje 2258655)
Hola a todos, he tenido problemas con el sql loader, me esta dando un error -350 es un error de sintaxis... a parte dice que se ha encontrado palabra clave.

Lo que estoy tratando de hacer es importar los datos que se encuentran en un archivo de texto a una tabla creada en la base de datos... el archivo que contiene los datos esta compuesto por 11 campos, el primer campo es de tipo fecha y el resto son numéricos. La estructura del archivo de control es la siguiente:

LOAD DATA
INFILE '20080101.txt'
APPEND INTO TABLE Trinidad
FIELDS TERMINATED BY'"'
(Date/Time
Temperature [°C]
Global Radiation [W/m²]
Relative Humidity [% RH]
Precipitation [mm]
Wind Speed [km/h]
Leaf Wetness [u]
Wind Direction [°]
Battery Voltage [V]
Incoming RF Level [µV]
Outgoing RF Level [µV]
Solar Cell [])

el archivo de control se llama carga.bat espero sus respuestas... gracias.

Pues parece que has errado en la forma de meter la data especificamente; la cabecera la tienes bien... mira en las faqs que por ahi deje esa respuesta para una 9i pero es exactamente lo mismo para una 10g

http://www.forosdelweb.com/255173-post20.html

:arriba:

Destroyer 28/01/2008 08:17

Re: Como importar desde un archivo de texto a oracle 10g
 
Antes que nada buen día... gracias por responder, fijate que ya pude solucionar el error anterior pero ahora me encuentro con un nuevo problema, lo que pasa es que el software que recopila la información, guarda los datos ya sea en un archivo de texto o en un archivo de excel, pero este guarda los datos por tiempo con un intervalo de 15 minutos, osea que durante el día recopilo 96 datos, pues cuando trato de importar los datos me dice que hay error en el campo fecha por valores alfanuméricos y que se esperaba un valor numérico, he modificado el archivo de control y la estructura es la siguiente:

LOAD DATA
INFILE '20080101.xls'
APPEND INTO TABLE Trinidad
(FECHA DATE"dd/mm/yyyy HH24:MI:SS",
TEMP,
RAD_SOLAR,
HUM_REL,
PREC,
VEL_VIENTO,
HUM_FOL,
DIR_VIENTO,
BATERIA,
FREQ_ENTRADA,
FREQ_SALIDA,
PANEL_SOLAR)

El archivo de texto donde se encuentran los datos a importar se llama 20080101.xls...

Linterns 30/01/2008 20:46

Re: Como importar desde un archivo de texto a oracle 10g
 
cuando guardas en excel debes verificar que el formato sea correspondiente al que tienes en tu base de datos oracle configurado... este error se da con los numeros (,.) y fechas (dd/mm/yyy) ya que dependiendo de la configuracion regional y de idioma de cada pc asi los guarda el excel... cosa contraria a Oracle que los guarda en su BBDD.

Si quieres minimizar el problema es importarlos a una tabla plana y tratarlos todos como texto simple; ya en la tabla plana llevarlos con un procedure a la tabla que desees (es decir realizar las validaciones dentro de oracle y no en la importacion).

fenix086 23/09/2008 07:30

Respuesta: Re: Como importar desde un archivo de texto a oracle 10g
 
Cita:

Iniciado por Destroyer (Mensaje 2249117)
Antes que nada les agradezco por responder a mi pregunta... :-) se me fue por alto decir que aun soy novato en oracle, aún estoy empezando, pero he leido muchos tutoriales y he estado prácticando, le agradezco las soluciones que me han dado, pero podrían decirme como ejecuto estas aplicaciones o en donde?

Hola que tal, he estado leyendo respecto al tema, y tengo casi que el mismo problema, necesito cargar un archivo plano en la BD de ORACLE, tengo esta sintaxis de prueba que encontré en internet

LOAD DATA
INFILE 'C:\registros.CSV'
BADFILE 'C:\fallos.BAD'
APPEND
INTO TABLE PRUEBA
FIELDS TERMINATED BY ';'
(ANO, MES, COMPANIA, SUC_SUCURSAL, ID_CANAL, PROD_PRODUCTO, PRESU_UND, PRESU_BS, PRESU_KG, TIPO_PRODUCTO)

el problema es que no se donde ejecutar esta sentencia :( estoy muy perdido, lo he probado como sentencia sql, store procedure y funcion, pero nada. No lo puedo ejecutar por consola, puesto que debe ser automático. Alguien me podría indicar como ejecutar esa sentencia???

también he encontrado esta línea...

sqlldr username/password@server control=loader.ctl

pero igual...no se donde ejecutarla :(

Destroyer 23/09/2008 09:54

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Hola, con la ayuda que me han brindado en este foro he aprendidos muchas cosas, y por lo menos con el problema que tienes creo que te puedo ayudar, para cargar datos desde un archivo plano a la DB de oracle, lo primero que debes hacer es: la sintaxis de prueba que tienes, la debes de escribir o pegar en un block de notas, luego dale algun nombre y guardalo con extensión .bat, y la linea que has encontrado sqlldr username/password@server control=loader.ctl, te sirve para mandar a ejecutar el archivo .bat que has guardado, esto lo haces desde linea de comandos, pero como el archivo lo has guardado con extensión .bat no es necesario llamarlo desde línea de comandos, sino simplemente puedes ejecutarlo dandole doble clic... espero te sirva....

fenix086 23/09/2008 13:08

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
hola Destroyer, Gracias por responder tan pronto, la verdad me urge entregar ese requerimiento y el problema de la solución que planteas, es que yo necesito cargar ese archivo automaticamente. De igual forma probé y me aparece "LOAD" no se reconoce como un comando interno o externo, programa o archivo ejecutado por lotes, de igual forma con "INFILE", "BADFILE"...etc

La idea es que desde una aplicación java, se pueda seleccionar el arhivo csv que se desea guardar y que oracle haga el resto. Me dicen que con un procedimiento almacenado se puede, pero pués Oracle no reconoce la palabra LOAD. en "LOAD DATA" Entonces no he tenido exitos al momento de ejecutarlo.

Destroyer 23/09/2008 20:54

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Bueno, pues yo lo he hecho en windows y me ha funcionado, lo primero que debes hacer es crear un archivo de control en donde va la sintaxis:

LOAD DATA
INFILE 'C:\registros.CSV'
BADFILE 'C:\fallos.BAD'
APPEND
INTO TABLE PRUEBA
FIELDS TERMINATED BY ';'
(ANO, MES, COMPANIA, SUC_SUCURSAL, ID_CANAL, PROD_PRODUCTO, PRESU_UND, PRESU_BS, PRESU_KG, TIPO_PRODUCTO)

Esto lo haces en un editor de texto, luego lo guardas con cualquier nombre por ejemplo carga.bat, en INFILE colocas la dirección donde se encuentra tu archivo plano, el BADFILE es donde se van a guardar los registros del archivo plano que no se puedan importar, y para que la importación sea de forma automática lo puedes hacer con el programador de tareas de windows...

fenix086 24/09/2008 07:34

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Mira que asi no me funciona, igual no entiendo algo, en ningún momento yo estoy definiendo la bd Oracle, clave, permisos ni siquiera el nombre de la BD. Y la forma que me dices para generarlo de forma automática, no me funciona, puesto que se debe hacer es al momento de generar un click en la aplicación. No se si me entiendas :( Gracias.

fenix086 24/09/2008 10:30

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Bueno pués después de revisar toda la info que tenía respecto al tema ya conseguí hacer la inserción de los datos desde la consola de windows.
1. Busque el archivo sqlldr, y copie la ruta donde se encontraba el arhivo en la variable path del sistema. C:\oracle\product\10.2.0\db_1\BIN, con el fín que reconociera el comando.

2. Cree un archivo control(fichero_control.ctl), que contiene las instrucciones de insercion:

load data
infile 'c:\archivo.csv'
badfile 'c:\Error Archivos.txt'
append into table I_ARCHIVOADJUNTO
fields terminated by "," optionally enclosed by '"'
(ARCADJ_TIQUET_CODIGO,ARCADJ_RUTA)


3. Cree el archivo.csv.
1,Ruta1
2,Ruta2
3,Ruta3
4,Ruta4
5,Ruta5

4. Ejecute la siguiente línea en la consola de windows(Ejecuta el proceso)

sqlldr USUARIO/CONTRASEÑA CONTROL='C:\fichero_control.ctl', DATA='c:\archivo.csv' direct=true

y listo, funciona :)

pero el problema es que yo lo necestio ejecutar desde una aplicación java y no se como hacer :( alguien me podría indicar??? Tal vez creando una función en oracle o un Store procedure

Destroyer 24/09/2008 16:02

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Bueno pues en Java si me quedo corto, aun no he explorado la programación en Java, pero lo unico que se me ocurre es que el fichero de control lo guardes como .bat y en la aplicación Java lo mandes a ejecutar... espero que encuentres la respuesta...

fenix086 03/10/2008 13:54

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
listo, ya conseguí crear dinamicamente los archivos .ctl y .bat, y ejecutar el .bat desde java, pero me queda un último problema, no me genera automáticamente el archivo .log, y si ejecuto esa misma linea por consola, si lo genera.

Alguién sabe por que???, que debo hacer??

haroldadonai 10/10/2008 17:58

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Amigo fenix086 realizaste una conexion entre java y oracle 10g? la verdad es que soy principiante en esto y no tengo idea de lo que puedo hacer para mandar dos valores ingresados mediante java y almacenarlos en la base de datos, no se si me podrías ayudar por favor te lo agradecería mucho

fenix086 07/11/2008 12:46

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Cita:

Iniciado por haroldadonai (Mensaje 2615182)
Amigo fenix086 realizaste una conexion entre java y oracle 10g? la verdad es que soy principiante en esto y no tengo idea de lo que puedo hacer para mandar dos valores ingresados mediante java y almacenarlos en la base de datos, no se si me podrías ayudar por favor te lo agradecería mucho

pues mira, la verdad tuve que hacer la conexion para obtener el nombre de las columnas de la tabla y asi crear el archivo .ctl. El resto lo maneja el sqlloader, quien se encarga de tomar el csv y cargarlo en la bd. En si, los datos no se cargan desde java, solo se crean los archivos .bat y .ctl y se ejecuta el .bat. Espero te sirva la respuesta un mes despues...

efexto 09/02/2009 15:48

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
con relacion a este tema me gustaria saber como hago para que cuando uno crea el archivo *.CTL (es la descipcion de la tabala a donde seran cargados los datos) una de las columnas sea alimentada por una secuencia

yo estoy realizando lo siguiente me gustaria saber si esta correcto

LOAD DATA
INFILE 'C:\oraclexe\app\oracle\product\10.2.0\server\BIN\ UNO.CSV'
INTO TABLE TI
FIELDS TERMINATED BY ";"
(id,
c_dos,
c_ter,
c_cuatro opc_seq.nextval)

diegocumarin 17/05/2011 09:55

Respuesta: Como importar desde un archivo de texto a oracle 10g
 
Hola muchachos se que no estoy dando respuesta a ninguna de las preguntas. pero aprobecho el foro ya que tengo una duda con respecto al tema.

Tengo un archivo .ctl que hace muy bien l llenado de una tabla de mi base de datos... el problema que tengo es que hay un campo dentro del CTL que viene defectuodo ya en el archivo txt q contiene los datos, necesito que al hacer la carga es decir el LOAD del ctl el valor de ese campo sea corregido desde este archivo de control para no pasarlo errado a la tabla q estoy cargando.

Mi solucion fue : realice una funcion en oracle que recibe como parametro el campo a modificar e hice muchas pruebas con valores y la funcion esta muy bien hecha...

Ahora como hago para llamar esa funcion dentro del mismo archivo ctl? :-S lo que quiero es que sea ejecutada en el CTL .. para que se modifique antes del llenado de la tabla (la importacion en oracle)....

Espero puedan ayudarme....


La zona horaria es GMT -6. Ahora son las 09:52.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.