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

Import/Export Oracle Discussion :

Import plusieurs fichiers csv dans une table


Sujet :

Import/Export Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Import plusieurs fichiers csv dans une table
    Bonjour,
    j'ai un petit problème. Je cale depuis hier sur les importations de données sur une base oracle via des fichiers csv.
    J'ai 2 fichiers csv qui au format
    Le premier fichier rempli certains champs de ma table temporaire tandis que l'autre fichier rempli les autres colonnes de ma table temporaire.

    Voici le contrôle qui remplit ma table temporaire avec un fichier csv
    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
     
    options (skip=1)
    load data 
    infile '../csv/facture.csv'   
    Truncate
    into table TMP_FACTURE
    fields terminated by ';'   optionally enclosed by '"'
    TRAILING NULLCOLS
    (
    ID NULLIF (ID = "NULL") ,
    STATUT NULLIF (STATUT = "NULL") ,
    CONTRAT_ID NULLIF (CONTRAT_ID = "NULL") ,
    DATE_ECHEANCE "to_char(to_date(:DATE_ECHEANCE,'DD/MM/YYYY'),'DD/MM/YYYY') " ,
    NUMERO NULLIF (NUMERO = "NULL") ,
    DATE_ETABLIE "to_char(to_date(:DATE_ETABLIE,'DD/MM/YYYY'),'DD/MM/YYYY') " ,
    DATE_FIN "to_char(to_date(:DATE_FIN,'DD/MM/YYYY'),'DD/MM/YYYY') " ,
    ETAT "to_char('A_TRAITER')"
    )
    Sachant que j'exécute mon fichier via un load.sh dans lequel j'établie ma connection au shéma et je charge les données via la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlldr userid=${schemaT}/${mdpass}  control=$CTL/facture.ctl log=$LOG/facture.log bad=$BAD/facture.bad discard=$DISCARD/facture.dsc direct=y errors=0
    Je suis pas assez d'expérience pour savoir comment le faire. Ma question est comment modifier ce fichier pour qu'il puisse lire 2 fichiers csv et insérer à la colonne voulue ?

    Merci à vous

  2. #2
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    a ma connaissance, sqlloader ne sait pas faire d'update sur une table.
    donc impossible de l'utiliser pour remplir une table avec deux fichiers
    différents qui mettent à jour les mêmes lignes.

    il est préférable de fusionner les deux fichiers dans un seul auparavant .

    l'option TRUNCATE vide la table avant le chargement .


    Cordialement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    salut,
    je me suis un peu documenter ces derniers temps et j'ai trouvé que l'utilisation des tables externes pouvaient être une solution.
    Mais je posais la questions vu qu'il s'agit de fichier plat et que je dois migrer une grosse volumétrie de données. Est ce que je ne serais pas limité par la taille max. du répertoire ou sera crée la table externe ?

    Sinon j'ai une autre solution, c'est de créer plusieurs table temp et avec sqlplus faire un update sur ma table final.

    Qu'en pensez vous ?

  4. #4
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    hello
    la solution des fichiers externes est bien si tu alimentes ta table en 2 passes ( 1 insert et 1 update ), quoique l'update peut être couteux, surtout si la volumétrie est importante.
    Le mieux serait de jointurer les 2 fichiers, mais le faire directement avec des tables externes est délicat car il n'y a pas de stats calculées sur les tables externes ( enfin, à ma connaissance ).
    Il faudrait donc alimenter 2 tables temporaires puis faire la jointure pour alimenter ta table finale en truncate/insert.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  5. #5
    Membre actif

    Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2008
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 167
    Points : 265
    Points
    265
    Par défaut
    les tables externe sont une solution pratique mais dans ton cas il faudrait mieux merger les fichiers avant pour le faire en une seul passe. plutot que insert puis update.

Discussions similaires

  1. Importer un fichier CSV dans une table Access
    Par zemeilleurofgreg dans le forum Bases de données
    Réponses: 17
    Dernier message: 09/07/2008, 22h48
  2. Importer un fichier csv dans une table mdb
    Par pobrouwers dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/12/2007, 14h17
  3. [WD9] Importer un fichier csv dans une table
    Par cactus666 dans le forum WinDev
    Réponses: 1
    Dernier message: 01/10/2007, 14h07
  4. Importer un fichier CSV dans une table mySQL
    Par crazydiver_e2 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/01/2007, 10h47
  5. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06

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