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:
DROP 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;
una vez creada la tabla vamos a ver el archivo y file .ctl
Código:
/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>#
El unico detalle es que debes escribir dentro de cada .ctl el nombre del fichero con los datos origen.
Espero que te haya servido.
Sldo Atte, Mario.