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

Oracle Discussion :

[SQL Loader]Import tables en fichier csv,Linux RHEL3 & Oracle 9i


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut [SQL Loader]Import tables en fichier csv,Linux RHEL3 & Oracle 9i
    Bonjour à tous,

    Voilà. J'aimerai importer des fichiers csv sous Oracle 9i qui a déjà une base de données.

    J'ai bien compris que je devais utiliser sqlldr, je l'ai bien sous ma machine (Oracle 9i avec Linux RHEL 3) mais j'aurai plusieurs questions (dont je n'ai pas trouvé les réponses dans les tutoriels) :

    1°) Est-ce qu'il faut que la table que je veux importer existe déjà sous la base ?
    2°) Est-il obligatoire que le nom des colonnes n'apparaissent pas dans le fichier texte ?
    3°) L'option skip compte le nombre de lignes je suppose ?

    Merci par avance de vos réponses

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Dans l'ordre :
    1. Oui
    2. Si le nom de la colonne apparait au debut de ton fichier, tu peux "sauter" cette ligne.
    3. skip sert justement à sauter cette ligne

    voili, voilou
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Merci pour cette réponse rapide

    Bon, donc la table doit exister, ce problème ne sera pas insurmontable.

    Pour ce qui est de skip, j'aurai souhaité qu'il en saute plusieurs... et je pense que j'aurai aussi besoin de l'option 'load'.

    Parce que voici un exemple de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    iduser;dtname;dtmaxSize
    1;Christa;10000
    2;Nicole;9000
    2 Rows retrieved
    Donc, il faut que je saute 3 lignes en mettent l'option ?
    Mais est-ce que je pourrai ajouter l'option load après, de telle sorte qu'il ne garde que les enregistrements et pas la dernière ligne (qui n'est pas un enregistrement) ?

    A moins que je trouve l'option dans mdb-sql de MDBTools pour empêcher l'impression de la dernière ligne... à étudier.

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Merci pour cette réponse rapide
    Celle ci l'est beaucoup moins

    Pour ce qui est de skip :
    Si tu as 3 lignes à sauter, alors il suffit de mettre skip=3 lors de l'appel à sqlldr

    Pour ce qui est de load :
    Cette option permet de dire combien de ligne tu as à charger, donc si tu connais le nb d'enregistrement ça peux marcher (load=50 pour 50 enregistrement).
    (sqlldr ne compte pas les lignes que tu sautes avec skip)

    Il n'existe pas (à ma connaissance) une option qui te permet de ne pas prendre en compte la dernière ligne.
    Par contre tu peux peux être supprimer cette ligne avec un petit shell unix !

    voili, voilou
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Ce n'est pas bien grave si la réponse a été un peu moins rapide, j'ai déjà une réponse

    Bien alors il faudra que je mette en forme mon fichier avant de faire l'import dans la base Oracle.

    Merci bien, grâce à toi j'ai pu avancer dans mon problème (et c'est pas rien d'arriver à me faire avancer... le problème de base étant lire une base Access sous Linux de manière automatique puisque devant pouvoir être executé durant un programme).


    Juste une dernière petite quesion : si mon fichier commence par des lignes vides, il faut que je les saute aussi ?

  6. #6
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Juste une dernière petite quesion : si mon fichier commence par des lignes vides, il faut que je les saute aussi ?
    Je pense que oui.

    voili, voilou
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Merci

    J'ai donc résolu mon problème

    Pour résumer :
    Le problème : utiliser sqlldr avec un fichier en csv contenant le nom des colonnes en début de fichier, et le nombres d'enregistrements en fin de fichier.

    La solution :
    Utiliser la commande "grep -v" pour enlever les lignes superflues, puis utiliser sqlldr avec l'option skip=2 (nombre de lignes vides en début de fichier).

    Contrainte :
    La table que l'on veut importer doit être existante


  8. #8
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut
    je ne comprend pas, tu as utilisé sqlldr sans utilisé un fichier de control

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bien sûr que si, j'ai utilisé un fichier de controle.

    Je voulais juste préciser deux-trois points techniques sur la commande sqlldr. Notamment parce que mes fichiers à importer ressemblaient à ça à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    COLONNE_UN;COLONNE_DEUX;COLONNE_TROIS
    1;2;3
    1;2;3
    2 Rows Retrieved
    Donc j'ai dû enlever le nom des colonnes ainsi que les stats pour pourvoir importer la table

    Grâce à la ligne suivante, j'importe la table (créée auparavant) :
    sqlldr login/pass control=control_file.ctl skip=2.

    Tu trouveras mon fichier de contrôle sur le forum à cette adresse :
    http://www.developpez.net/forums/sho...d.php?t=356082

    Si t'as des questions, hésites pas, je ferai au mieux pour y répondre.

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut
    Ok j'ai compris.

    Merci beaucoup.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2015, 17h38
  2. [PostgreSQL] Importation d'un fichier .csv avec création de table
    Par dor_boucle dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/05/2013, 11h50
  3. Oracle 10g: SQL LOADER longueur maximum chemin fichier à importer
    Par mamid1706 dans le forum Import/Export
    Réponses: 0
    Dernier message: 16/12/2010, 12h18
  4. Import d'un fichier CSV vers une table
    Par yahia elfakr dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/08/2010, 11h33
  5. Réponses: 4
    Dernier message: 17/03/2008, 17h41

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