Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
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/03/2011, 14h24   #1
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 3
Points : 3
Par défaut SQL*Loader - Jointure sous

Bonjour,

Je découvre votre site et sa communauté qui pourront peut être m'aider.

Aujourd'hui, j'ai :
- un fichier de données fichiertoday.dat avec les clients d'une societe X,
- une table NOM_DE_LA_TABLE_TODAY où sont insérées ces données,
- un fichier SQL*Loader,
- un fichier de controle,
Code :
1
2
3
4
5
6
7
8
	LOAD DATA
	TRUNCATE
	INTO TABLE NOM_DE_LA_TABLE_TODAY
	FIELDS TERMINATED BY ";"
	TRAILING NULLCOLS
	(
	 DESCRIPTION DE LA TABLE NOM_DE_LA_TABLE_TODAY
	)

Sera à ma disposition demain, un deuxieme fichier (fichiertomorrow.dat) avec :
- le numéro des clients des sociétés X et Y qui ont signé un partenariat.
- le type de client (est chez 'X', est chez 'Y', est chez X et Y ('M'), est classe 'Z').
Ce fichier n'a pas d'en-tête de colonne.
Cette deuxieme colonne (type de client) n'existe pas dans fichiertoday.dat.

Extrait de fichiertomorrow.dat :
Code :
1
2
3
400000000007;X;
500000000006;Y;
...

Je cherche à réaliser une alimentation des données de la table NOM_DE_LA_TABLE_TODAY avec le fichier TEST fichiertomorrow.dat que j'ai à ma disposition.
Dans la table je souhaite avoir uniquement les clients typés 'X' et 'M'
Je veux donc modifier le (bon) fichier afin que demain cette table contienne l'ensemble des clients présents dans le 1er fichier qui sont topés 'X' et 'M' dans le 2nd fichier.
Voilà comment je pense les modifications ; en y ajoutant une condition WHEN afin de réaliser un équivalent de jointure entre les 2 fichiers.


Code :
1
2
3
4
5
6
7
8
9
10
11
LOAD DATA
 INFILE CHEMIN_D_ACCES/fichiertoday.dat
 INFILE CHEMIN_D_ACCES/fichiertomorrow.dat
TRUNCATE
INTO TABLE NOM_DE_LA_TABLE_TODAY
 WHEN COLONNE_2 IN ('X' , 'M')           ### Comment sélectionner l'information de la 2e colonne ?
FIELDS TERMINATED BY ";"
TRAILING NULLCOLS
(
 DESCRIPTION DE LA TABLE NOM_DE_LA_TABLE_TODAY
)

Pensez-vous que cette façon de procéder marchera ? Y a-t-il une autre manière de s'y prendre ...
car je pense qu'avec ça, des clients "bien" topés dans le fichier n°2 et absent dans le 1er seront ajoutés dans ma table sans leurs informations.


Merci d'avance pour votre aide.
boys95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 09h31   #2
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 3
Points : 3
Pour ceux qui connaissent le langage SQL, ça donnerait quelques chose comme :
Code :
1
2
3
4
5
CREATE TABLE NOM_DE_LA_TABLE_TODAY AS
SELECT a.* , b.type
FROM fichiertoday a , fichiertomorrow b
WHERE a.numcli = b.numcli
AND b.type IN ('X' , 'M')
boys95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 10h48   #3
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 3
Points : 3
Je viens de trouver ma réponse sur une documentation US :

Citation:
Specifying Multiple Datafiles

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.
Bien que la disposition des enregistrements doit être identique.
boys95 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h49.


 
 
 
 
Partenaires

Hébergement Web