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 - charger un fichier plat ds plusieurs tables


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Par défaut sql loader - charger un fichier plat ds plusieurs tables
    Bonjour,

    Si quelqu'un pouvait m'aider à résoudre ce petit problème ce serait bien sympa.

    J'essaye d'importer des données dans une base oracle (8i) à l'aide de sqlldr.
    Dans un script sql, je crée mes tables, ensuite j'appele le sqlldr pour initialiser mes tables avec les données d'un fichier plat. Je veux en fait insérer une partie des champs dans une table et l'autre partie ds l'autre. Les champs sont de longueurs variables. Les données insérées ds la première table sont OK mais pour la deuxième table il y a un décalage. (le prenom est placé ds le nom, le matricule ds le prénom, ... etc)

    Structure d'une ligne du fichier plat
    Rue | tel | code | ville | nom | prenom |matricule | fonction | categorie


    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
     
    fichier de controle
     
    LOAD DATA INFILE 'file.csv'
    APPEND
    INTO TABLE Z_LOCALITE
    FIELDS TERMINATED BY '|'
    TRAILING NULLCOLS(
    	LOCID CHAR(10) "SEQ_LOC.nextval",
    	RUE CHAR(200),
    	TELEPHONE CHAR(50),
    	CODE CHAR(10),
    	VILLE CHAR(150)
    )
     
    INTO TABLE Z_PERSONNE
    FIELDS TERMINATED BY '|'
    TRAILING NULLCOLS
    (
    	PERSONNEID "SEQ_PERSONNE.nextval",
    	NOM CHAR(50),
    	PRENOM CHAR(50),
    	MATRICULE CHAR(11),
    	FONCTION CHAR(3),
    	CATEGORIE CHAR(1),
    	LOCID CHAR(10) "SEQ_LOC2.nextval"
    )

  2. #2
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    Et si tu mets tes champs calculer en fin de loader ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INTO TABLE Z_PERSONNE
    FIELDS TERMINATED BY '|'
    TRAILING NULLCOLS
    (
    	NOM CHAR(50),
    	PRENOM CHAR(50),
    	MATRICULE CHAR(11),
    	FONCTION CHAR(3),
    	CATEGORIE CHAR(1),
    	LOCID CHAR(10) "SEQ_LOC2.nextval"
    	PERSONNEID "SEQ_PERSONNE.nextval",
    )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Par défaut
    Cela ne fonctionne pas...
    Je ne sais pas si c'est possible.

    J'ai utilisé deux fichiers de controle et j'appele deux fois la commande
    de sqlldr.mais bon, lire deux fois un fichier d'entrée pour récupérer des données c'est loin d'être top...

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Ce tuto ne répond-il pas à ta question ?
    http://jaouad.developpez.com/sqlldr/#LV-D

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Par défaut
    Non, ds cette exemple, il met ces données ds 2 tables mais ne remplit pas toutes les colonnes.

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par persam
    il met ces données ds 2 tables mais ne remplit pas toutes les colonnes.
    Il me semble que c'est exactement ce que tu veux faire (hormis le fait que tu as 2 colonnes calculées...)

    Qu'entends-tu par "Cela ne fonctionne pas" ? Tu as une erreur ? Tu as toujours un décalage ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/02/2008, 11h58
  2. SQL*LOADER : Charger une valeur négative
    Par coraziari_l dans le forum SQL
    Réponses: 1
    Dernier message: 24/01/2008, 11h22
  3. SQL LOADER : paramétrage du fichier à charger
    Par boisdin dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 31/07/2007, 17h19
  4. Réponses: 2
    Dernier message: 30/01/2007, 09h01
  5. [8i SQL Loader] Charger signe €
    Par HarryCoco dans le forum SQL
    Réponses: 3
    Dernier message: 13/03/2006, 19h08

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