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

JDBC Java Discussion :

Exécution script SQL


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut Exécution script SQL
    Bonjour,

    j'ai un script SQL, existe-t-il un moyen de l'exécuter directement depuis mon code java ? Je pensais à quelque chose de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.execute("D:/monScript.sql");
    Enfin quelque chose d'aussi simple et rapide que le code suivant tappé en lign de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source D:\monScript.sql;

    Je ne veux en effet pas parcourir mon fichier sql pour en ressortir chaque requête.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Il n'y a pas de moyen standard JDBC de traiter un fichier SQL.

    Ce n'est pas vraiment à Java de traiter ce genre de fichier; Cependant tu peux toujours executer via Java la commande système de ton SGBD pour traiter un fichier SQL donné, pour peu que tu aies confiance dans ce fichier et que tu puisses traiter les erreurs efficacement, et aussi que les transactions soient bien gérées ( commit à la fin du script par exemple ... ).

    A+
    K

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    C'est bien ce qu'il me semblait avoir compris, tant pis !

    Merci quand même

    Je laisse ouvert des fois que quelqu'un ait quelque chose à proposer

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Bon, finalement le mieux pour moi est de parcourir mon fichier je pense. Ce que j'ai fait marche, mais mon script (backup de ma base) contient des lignes assez longues (blob dans la base) et cela ralentit énormément le programme. Je pense que le problème vient du côté d'Hibernate, mais voici le code, vous pourrez peut-être m'en dire plus :
    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
    String backupScript = "..." ;
    Session session = HibernateSessionFactory.getSession();
    InputStream ips = new FileInputStream(backupScript); 
    BufferedInputStream bis= new BufferedInputStream(ips);
    InputStreamReader ipsr = new InputStreamReader(bis);
     
    BufferedReader br = new BufferedReader(ipsr);
    String ligne;
    String sqlQuery = "";
    while ((ligne=br.readLine()) != null) {
            if (ligne.startsWith("--")) {
    	    continue;
    	}
            sqlQuery += ligne;
    	if (ligne.endsWith(";")) {
    	    Transaction transaction = session.beginTransaction();
    	    session.createSQLQuery(sqlQuery)		.executeUpdate();												
    	    transaction.commit();
    	    sqlQuery = "";
    	 }
    }
    br.close(); 
    session.close();
    D'où viendrait ce problème alors ? Comment faire pour optimiser tout cela ?

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je ne sais pas si la différence sera flagrante mais il vaudrait mieux ne pas faire de commit à chaque ligne. Si tu peux ne le faire qu'une fois (ou à la limite placer des commit aux endroits stratégiques de ton script), ça sera déjà mieux ...

    Je serais toi, la transaction, je ne la commencerai qu'au début et je la validerais à la fin seulement ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Alors j'ai essayé de tout faire dans une seule transaction, avec un seul commit, mais je n'ai pas vu de changement, cela met un temps fou au niveau du blob.
    Avec Mysql Administrator, le backup ne prend que quelques secondes pourtant ( 5-6sec ). Est-ce possible que le problème vienne de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.createSQLQuery(sqlQuery).executeUpdate();
    parce que la requête SQL est trop longue ?


    Edit : j'ai posté dans le sous forum Hibernate, cela a peut-être plus sa place là-bas : Requête avec blob très lente.

    Edit 2 : Problème résolu, le problème venait en fait de l'option <property name="hibernate.show_sql"> qui était à true, Eclipse ne devait donc pas aimer lorsque la requête contenant le blob apparaissait. Une fois passée à flase, le tout fonctionne correctement. Merci tout de même in, tu as un pointé un autre problème

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

Discussions similaires

  1. exécution script sql
    Par karinal dans le forum kettle/PDI
    Réponses: 4
    Dernier message: 02/03/2009, 11h50
  2. comment ca marche exécution script SQL?
    Par helene0618 dans le forum kettle/PDI
    Réponses: 3
    Dernier message: 27/02/2009, 11h26
  3. Exécution script SQL
    Par Alphonse87 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/08/2008, 12h28
  4. Exécuter script SQL
    Par Samshay dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/05/2008, 14h22
  5. Exécuter script .SQL
    Par christellel198 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/11/2005, 15h53

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