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 :

Insertion de plusieurs lignes en 1 requête


Sujet :

Oracle

  1. #1
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut Insertion de plusieurs lignes en 1 requête
    Bonjour j'ai un peu honte car je ne trouve pas comment insérer en une requete plusieurs enregistrements sous Oracle 10g.

    Je suis parti du principe que sous MySQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO tb1(ch1,ch2) VALUES
    ('lig1','text1'),
    ('lig2','tex2');
    que sous Oracle, l'idée serait sensiblement identique. Or j'obtiens ce message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00933: la commande SQL ne se termine pas correctement
    ça doit etre tellement simple que je ne trouve pas la reponse

  2. #2
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    tu peu tout simplement faite deux insert
    INSERT INTO tb1(ch1,ch2) VALUES
    ('lig1','text1');
    INSERT INTO tb1(ch1,ch2) VALUES
    ('lig2','tex2');

  3. #3
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    l'ennui c'est que j'ai 500.000 lignes une autre idée?

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    utiliser copier coller du clavier pour ne pas tappé insert in.....

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    je sais pas si ta peu aider mais si c'est a partir d'une autre table que tu rappartrie les données tu peu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table1(champ1,champ2) select champ1 ,champ2 from table2

  6. #6
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    j'utilise un export de Mysql des données. Le fichier pese 2.1 Go et donc pour y acceder, je dois faire un slipt du fichier sous linux ce qui est loin d'etre facile donc de tout reremplir à la main avec un copier/coller. C'est pour ça que j'aurai aimé savoir si un insert multiple de cette sorte etait envisageable avec Oracle.

  7. #7
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Ton fichier est un export texte donc il a une syntaxe (Fixe ou autre) et donc SQL*Loader peut faire le boulot pour toi.

    Suffit juste de lire la doc...

  8. #8
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    jai peu etre une solution..

    a la place de faire un export tu fait un select que tu modifie pour avoir tes insert
    je m'explique

    tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select 'insert into table (champ1,champ1)  values '||camp1||','||champ2||';'
    from table;
    tu aura la génération automatique de tes ligne avec un insert pour chaque ligne

  9. #9
    Membre averti Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Points : 436
    Points
    436
    Par défaut
    Bonjour,

    honnetement, je ne pense pas que la solution de Adiltyane soit vraiment pertinente car je pense que cela va prendre beaucoup de temps pour l'affichage de 500 000 lignes et puis, sqlldr a quand même une fonction rien que pour cela, il suffit juste d'écrire le fichier de controle correspondant. (comme l'a dit Philcero d'ailleur)

  10. #10
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    je vais donc suivre son conseil mais c'est domage que Oracle ne puisse faire ça dans la mesure ou MySQL le fait. Merci de vos reponses.

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 61
    Points : 57
    Points
    57
    Par défaut
    sqlloader permet ce genre de chose certes avec un tout petit plus de travail (et encore dans ton cas très peu) mais beaucoup plus de possibilité (par exemple conversion à la volée des champs de date)

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

Discussions similaires

  1. insertion de plusieurs lignes
    Par opensource dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/01/2008, 16h36
  2. Insertion de plusieurs lignes
    Par pepi22 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 24/08/2007, 20h15
  3. Insert de plusieurs lignes
    Par abibac dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/03/2007, 13h42
  4. insertion de plusieurs lignes, comment faire ?
    Par RR instinct dans le forum SQL
    Réponses: 6
    Dernier message: 23/01/2007, 09h40
  5. [MySQL] Sélection de plusieurs lignes en une requête
    Par kalash_jako dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 19h43

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