Bonjour,
c'est après avoir lu la doc et fait des recherches que je me permets de poster une demande d'aide.
Le contexte : j'ai plusieurs tables à charger en données, sachant que j'ai un fichier .txt par table à charger.
D'après ce que j'ai pu trouver/lire sur le net SQLLDR permet de :
- charger plusieurs fichiers dans une même table
- charger 1 fichier dans plusieurs tables
Ce que je veux faire c'est les deux à la fois, c'est-à-dire, dans la même instance de load, charger 1 fichier X.txt dans la table X, 1 fichier Y.txt dans la table Y, etc ...
je me suis basé sur la doc oracle :
et cette page : http://www.orafaq.com/wiki/SQL*Loade...les_at_once.3F
Code : Sélectionner tout - Visualiser dans une fenêtre à part To load data from multiple datafiles in one SQL*Loader run, use an INFILE clause for each datafile. Datafiles need not have the same file processing options, although the layout of the records must be identical. For example, two files could be specified with completely different file processing options strings, and a third could consist of data in the control file.
Voici donc ma commande :
et mon control file :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sqlldr OREF/OREF@XE control=m:\CREATION_BASE\ScriptImport\test02\loadDatasOREF_02.ctl bad=m:\CREATION_BASE\ScriptImport\test02\bad.txt log=m:\CREATION_BASE\ScriptImport\test02\log.txt skip=1
Malheureusement ma syntaxe ne doit pas être la bonne. voici ce que donne le fichier log :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 LOAD DATA -- Integration données de la table artisan INFILE 'm:\TablesDatas\NOM\ARTISAN.txt' REPLACE -- fonction replace permettant INTO TABLE NOM_ARTISAN FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' (NOM_ARTISAN_CODE, ARTISAN_lib ) -- Integration de la table artisan INFILE 'm:\TablesDatas\NOM\CJ.txt' REPLACE -- test de loption replace sur table vide INTO TABLE NOM_CJ FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' (NOM_CJ_CODE, CJ_lib ) -- test integration table FAP84_1993 avec integrités réferentielles (table FAP22_1993) INFILE 'm:\TablesDatas\NOM\FAP84_1993.txt' REPLACE INTO TABLE NOM_FAP94_1993 FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' (NOM_FAP84_1993_CODE, FAP84_1993_lib )
Pour le moment je pense pouvoir contourner le pb en faisant un batch executant autant de commande SQLLDR que j'ai de fichier ... mais bon ... j'ai à peu près 150 tables à remplir ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SQL*Loader: Release 10.2.0.1.0 - Production on Jeu. Août 21 15:40:30 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL*Loader-350: Erreur de syntaxe en ligne 14. Mot-clé INTO attendu, Mot-clé infile trouvé. INFILE 'm:\TablesDatas\NOM\CJ.txt' ^
comment faire tout ds la même instance SQLLDR ???
Merci d'avance de vos réponses,
Cordialement,
GR
Partager