| |||
Nombre Fichero Al Ejecutar Un Loader Buenas estoy cargando unas tablas en Oracle 9i a través de un loader y mediante un ctl en el que indico las columnas a cargar en la tabla, y necesito recuperar el nombre del fichero que cargo para cuando falle saber a que fichero corresponde cada registro. ¿Alguien me puede ayudar? gracuas |
| |||
Re: Nombre Fichero Al Ejecutar Un Loader Estuve buscando la manera de que puedas ingresar el archivo que tiene los datos por parametro para que fuera mas reutilizable el ctl pero me da muchos errores. Primero vamos a crear una tabla
Código:
una vez creada la tabla vamos a ver el archivo y file .ctlDROP TABLE MUCHY_POSTES_TEMP PURGE; CREATE TABLE MUCHY_POSTES_TEMP ( POSTE_ID VARCHAR2(20), GRADO_S VARCHAR2(20), MINUTO_S VARCHAR2(20), SEGUNDO_S VARCHAR2(20), GRADO_W VARCHAR2(20), MINUTO_W VARCHAR2(20), SEGUNDO_W VARCHAR2(20), ARCHIVO VARCHAR2(100) ) TABLESPACE AUXILIAR PCTFREE 5 PCTUSED 95;
Código:
El unico detalle es que debes escribir dentro de cada .ctl el nombre del fichero con los datos origen./example># cat muchy.txt 101 ;71 ;17 ;23.2258194 ;44 ;10 ;46.1511137 102 ;71 ;14 ;11.2537426 ;44 ;9 ;48.6688576 103 ;71 ;13 ;67.2499024 ;44 ;9 ;35.9677992 104 ;71 ;12 ;33.2457742 ;44 ;9 ;23.2688671 105 ;71 ;10 ;15.2424875 ;44 ;8 ;87.8423192 106 ;71 ;9 ;61.2398834 ;44 ;8 ;45.1369375 107 ;71 ;7 ;3.2922907 ;44 ;8 ;59.9120713 108 ;71 ;5 ;89.2736358 ;44 ;8 ;7.3165487 109 ;71 ;4 ;95.4788036 ;44 ;7 ;53.3820880 110 ;71 ;3 ;22.0644739 ;44 ;7 ;57.1804391 /example># cat muchy.ctl LOAD DATA INFILE '/example/muchy.txt' TRUNCATE INTO TABLE muchy_postes_temp TRAILING NULLCOLS ( POSTE_ID CHAR terminated by ';', GRADO_S CHAR terminated by ';', MINUTO_S CHAR terminated by ';', SEGUNDO_S CHAR terminated by ';', GRADO_W CHAR terminated by ';', MINUTO_W CHAR terminated by ';', SEGUNDO_W CHAR terminated by whitespace, ARCHIVO CONSTANT 'muchy.txt' ) /example># sqlldr USERID=/ CONTROL=muchy.ctl SQL*Loader: Release 10.2.0.1.0 - Production on Fri Feb 15 14:13:32 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. Commit point reached - logical record count 10 /example># Espero que te haya servido. Sldo Atte, Mario. |
| |||
Re: Nombre Fichero Al Ejecutar Un Loader Otra cosa que puedes hacer Muchy, es agregar dentro de cada archivo el nombre del mismo. Si usas unix como pienso que si usas, puede que este comando antes del Sql Loader, te ayudara mucho. Un poco de codigo entonces....
Código:
Dependiendo del Unix debes usar Awk o Nawk, no es muy dificil./example># cat muchy.txt 101 ;71 ;17 ;23.2258194 ;44 ;10 ;46.1511137 102 ;71 ;14 ;11.2537426 ;44 ;9 ;48.6688576 103 ;71 ;13 ;67.2499024 ;44 ;9 ;35.9677992 104 ;71 ;12 ;33.2457742 ;44 ;9 ;23.2688671 105 ;71 ;10 ;15.2424875 ;44 ;8 ;87.8423192 106 ;71 ;9 ;61.2398834 ;44 ;8 ;45.1369375 107 ;71 ;7 ;3.2922907 ;44 ;8 ;59.9120713 108 ;71 ;5 ;89.2736358 ;44 ;8 ;7.3165487 109 ;71 ;4 ;95.4788036 ;44 ;7 ;53.3820880 110 ;71 ;3 ;22.0644739 ;44 ;7 ;57.1804391 /example># cat muchy.txt | nawk -v F=muchy.txt '{ printf "%-10s %-10s\n", $0, F}' > muchy.tx2 /example># cat muchy.tx2 101 ;71 ;17 ;23.2258194 ;44 ;10 ;46.1511137 muchy.txt 102 ;71 ;14 ;11.2537426 ;44 ;9 ;48.6688576 muchy.txt 103 ;71 ;13 ;67.2499024 ;44 ;9 ;35.9677992 muchy.txt 104 ;71 ;12 ;33.2457742 ;44 ;9 ;23.2688671 muchy.txt 105 ;71 ;10 ;15.2424875 ;44 ;8 ;87.8423192 muchy.txt 106 ;71 ;9 ;61.2398834 ;44 ;8 ;45.1369375 muchy.txt 107 ;71 ;7 ;3.2922907 ;44 ;8 ;59.9120713 muchy.txt 108 ;71 ;5 ;89.2736358 ;44 ;8 ;7.3165487 muchy.txt 109 ;71 ;4 ;95.4788036 ;44 ;7 ;53.3820880 muchy.txt 110 ;71 ;3 ;22.0644739 ;44 ;7 ;57.1804391 muchy.txt /example># mv muchy.tx2 muchy.txt /example># cat muchy.ctl LOAD DATA INFILE '/example/muchy.txt' TRUNCATE INTO TABLE muchy_postes_temp TRAILING NULLCOLS ( POSTE_ID CHAR terminated by ';', GRADO_S CHAR terminated by ';', MINUTO_S CHAR terminated by ';', SEGUNDO_S CHAR terminated by ';', GRADO_W CHAR terminated by ';', MINUTO_W CHAR terminated by ';', SEGUNDO_W CHAR terminated by whitespace, ARCHIVO CHAR terminated by whitespace ) /example># sqlldr USERID=/ CONTROL=muchy.ctl SQL*Loader: Release 10.2.0.1.0 - Production on Mon Feb 18 11:49:49 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. Commit point reached - logical record count 10 /example># Mucha Suerte. Sldo Atte, Mario. |