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 :

Multiple datafiles dans multiples tables


Sujet :

SQL*Loader Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Multiple datafiles dans multiples tables
    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 :
    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.
    et cette page : http://www.orafaq.com/wiki/SQL*Loade...les_at_once.3F

    Voici donc ma commande :
    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
    et mon control file :
    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
     )
    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
     
    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' 
    ^
    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 ....

    comment faire tout ds la même instance SQLLDR ???

    Merci d'avance de vos réponses,
    Cordialement,
    GR

  2. #2
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Il me semble que cela ne soit pas possible si je ne me trompe pas.

    Je te conseille donc de faire 2 .ctl que tu pourras lancer via un script shell ou bash suivant l'OS de ton serveur.
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Merci de la réponse.

    Je m'étais effectivement un peu douté que j'aurai une réponse dans ce genre et j'ai commencé à travaillé sur 1 fichier de commande (.bat car WinServer2003) lançant mes .ctl

    Je vais donc devoir lancer les 150 .ctl les uns à la suite des autres .... et donc 150 pti fichiers log à éplucher plutôt qu'un seul grand ...

    cordialement,
    GR

  4. #4
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    il faut peut-être voir si cela est possible d'écrire dans un seul fichier de log en ajout.
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Je n'ai pas réussi à écrire ds un seul fichier log.
    Mais ce n'est pas plus mal. ça permet de bien identifier les imports ayant posé problème ...

    Merci.

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

Discussions similaires

  1. Multiples formulaires dans une table
    Par GérardMartinelli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/04/2010, 15h27
  2. Multiples INSERT dans deux tables diffèrentes
    Par pcsystemd dans le forum Débuter
    Réponses: 2
    Dernier message: 16/06/2009, 07h50
  3. insertion multiple dans une table
    Par nenekes dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/02/2007, 10h50
  4. Clé multiple dans une table
    Par iutcien dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 31/05/2006, 14h45
  5. Enregistre résulat multiplication dans une table
    Par faranfasi dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h04

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