IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL*Loader Oracle Discussion :

SQL*Loader - Jointure sous


Sujet :

SQL*Loader Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 3
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Pour ceux qui connaissent le langage SQL, ça donnerait quelques chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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')

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Je viens de trouver ma réponse sur une documentation US :

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Message 2100 sous SQL LOADER
    Par kramlech dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 21/10/2009, 17h34
  2. jointure impossible dans sql server 2005 sous vista
    Par blach dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2009, 10h58
  3. jointure sous SAS proc sql
    Par id301077 dans le forum SAS Base
    Réponses: 3
    Dernier message: 15/05/2009, 17h08
  4. Chargement de données sous Oracle avec sql loader
    Par yayamo dans le forum SQL*Loader
    Réponses: 4
    Dernier message: 07/08/2008, 15h40
  5. SQL Loader sous MySQL
    Par nicocolt dans le forum SQL Procédural
    Réponses: 15
    Dernier message: 07/07/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo