2010-10-07 26 views
1

je un fichier texte doivent être chargés ont une structure comme celui-ci (mal, je n'ai pas permis de changer):
Charger un fichier de données de texte structuré en utilisant un seul fichier de contrôle

MM/DD/YYYY 24HH:MI:SS NO_OF_REC 
EMP_ID,EMPNAME,SALARY 
..... 


Ex:

12/24/2010 20:30:10 number_of_datarow_below 
E0001,SMITH,5000 
E0002,JOHN,7000 
E0003,KEWELL,9000 

Dans un tableau:

EMP(ISHEADER, HEAD_DATA_TIME, NO_OF_REC, EMP_ID,EMPNAME,SALARY) 

Le type de données de colonne peut être flexible.

résultat de charge prévu:

ISHEADER HEAD_DATA_TIME  NO_OF_REC  EMP_ID EMPNAME SALARY 
    1   12/24/2010 20:30:10 3    
    2           E0001 SMITH 5000    
    2           E0002 JOHN  7000    
    2           E0003 KEWELL 9000    

Ma solution: J'utilise deux fichiers de contrôle:
      1. Le premier à en-tête charger (en utilisant l'option LOAD = 1 et le mode TRUNCATE) .
      2. La seconde pour charger le reste des données (en utilisant les modes OPTION SKIP et APPEND).

Existe-t-il une méthode de résolution qui n'utilise qu'un seul fichier de contrôle?

Merci.

Répondre

0

Mon SQL Loader est très rouillé, mais ne pourriez-vous pas utiliser la clause WHEN?

INTO TABLE emp 
    WHEN rectype = 'E' 
    (rectype POSITION(1:1) CHAR, 
    ...) 
INTO TABLE emp 
    WHEN rectype != 'E' 
    (rectype POSITION(1:1) CHAR, 
    ...) 
+0

J'ai fait de mon mieux mais je ne peux pas. J'utilise SQLLDR d'Oracle. – pinichi

+0

J'utilise SQLLDR d'Oracle. Oracle loader a quelque chose de prometteur comme sequence, max, rownum mais il ne sert qu'à manipuler les données après avoir su dans quelle table charger, elles peuvent être utilisées dans quand la condition. – pinichi