Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2007, 12h33   #1
Invité de passage
 
Inscription : novembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 14
Points : 3
Points : 3
Par défaut SQL*LOADER - Charger des données simultanément dans 2 tables

Bonjour
Oracle Database 9i Win 2000
Avec SQL*LOADER est-t-il possible de charger dans 2 tables selon la valeur d'un champ : dans la table T1 si la valeur de col3 est '1' sinon dans la table T2 (les 2 tables sont identiques du point de vue structure)
J'ai essayé avec le fichier de contrôle suivant mais ça ne fonctionne pas.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
LOAD DATA
INFILE *
INSERT
INTO TABLE t1
when (col3 = '1')
FIELDS delimited BY ':'  TRAILING nullcols (col1, col2, col3, col4)
 
INTO TABLE t2
when (col3 != '1')
FIELDS delimited BY ':'  TRAILING nullcols (col1, col2, col3, col4)
 
begindata
1:ABC:1:15000
4:DEF:2:38000
5:GHI:1:20000
Merci de votre aide
radoara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 06h52   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,

Le chargement dans 2 tables est bien possibles avec sqlldr.

essayez :
Citation:
INTO TABLE t2
when (col3 <> '1')
FIELDS delimited BY ':' TRAILING nullcols (col1, col2, col3, col4)
Sinon quelle erreur obtenez vous ?
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 09h01   #3
Invité de passage
 
Inscription : novembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 14
Points : 3
Points : 3
Merci
Il y a une petite erreur de syntaxe dans mon fichier de controle, au lieu de "Delimited" il fallait lire "Terminated". Mais le problème est ailleurs. Je réussis à charger dans la première table mais pas dans la seconde.
Types des colonnes :
col1 number, col2 varchar2(20), col3 number, col4 number

Voici donc un extrait du fichier log

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
TABLE T1, chargé quand COL3 = 0X31(caractère '1')
OPTION d'insertion en vigueur pour cette table : INSERT
option TRAILING NULLCOLS effective
 
   Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
------------------------------ ---------- ----- ---- ---- ---------------------
COL1                                FIRST     *   :       CHARACTER            
COL2                                 NEXT     *   :       CHARACTER            
COL3                                 NEXT     *   :       CHARACTER            
COL4                                 NEXT     *   :       CHARACTER            
 
Table T2, chargé quand COL3 != 0X31(caractère '1')
Option d'insertion en vigueur pour cette TABLE : INSERT
OPTION TRAILING NULLCOLS effective
 
   Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
------------------------------ ---------- ----- ---- ---- ---------------------
COL1                                 NEXT     *   :       CHARACTER            
COL2                                 NEXT     *   :       CHARACTER            
COL3                                 NEXT     *   :       CHARACTER            
COL4                                 NEXT     *   :       CHARACTER            
 
Enregistrement 2 : Rejeté - échec de toutes les clauses WHEN.
 
TABLE T1 :
  Chargement réussi de 2 Lignes.
  0 Lignes chargement impossible dû à des erreurs de données.
  1 Ligne chargement impossible car échec de toutes les clauses WHEN.
  0 Lignes chargement impossible car tous les champs étaient non renseignés.
 
 
TABLE T2 :
  Chargement réussi de 0 Lignes.
  0 Lignes chargement impossible dû à des erreurs de données.
  3 Lignes chargement impossible car échec de toutes les clauses WHEN.
  0 Lignes chargement impossible car tous les champs étaient non renseignés.
 
 
Espace affecté au tableau de liens :                 132096 octets(64 lignes)
Octets de tampon de lecture : 1048576
 
Nombre total d'enregistrements logiques ignorés :          0
Nombre total d'enregistrements logiques lus :             3
Nombre total d'enregistrements logiques rejetés :         0
Nombre total d'enregistrements logiques mis au rebut :        1
radoara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h35.


 
 
 
 
Partenaires

Hébergement Web