Importer les données depuis un fichier csv vers mysql [Résolu]

cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 17 août 2011 à 15:32 - Dernière réponse : cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention
- 20 août 2011 à 00:40
Slt tout le monde,

Je suis débutante en programmation et j'ai un projet à réaliser en java. Ce projet consiste à stocker les données d'un fichier excel dans ma BD pourqu'elles puissent être traitées après.

J'ai réussi la conversion du fichier de format excel vers le format csv. Maintenant, je me suis bloquée au niveau de l'importation des données vers ma BD myqsl.

Si qlq peut me donner un coup de pouce je lui en serait reconnaissante.(Je ne sais même pas par quoi je dois commencer)
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 20 août 2011 à 00:40
2
Merci
Bonjour,

Merci bien pour votre aide j'ai rectifie le code et maintenant Ça marche très bien.

Bon mon premier problème résidait en la ligne suivante: stmt.executeQuery(query);
Cette ligne retourne normalement un résultat alors que la requête laod ne retourne rien donc il faut la remplacer par :stmt.execute(query);

Aussi j'avais une erreur au niveau de la requête : il faut 4 antislash et non pas 2

Cordialement

Merci cs_laritta 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_laritta
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 17 août 2011 à 18:51
1
Merci
Bonjour,

Dis nous ce que tu sais sur le sujet et essaye d'être plus précise. Explique nous ce qui te poses problème précisément.

Pour débuter, tu dois installer un SGBD sur ton poste de travail : mySQL et ajouter le .jar qui te permet de faire la connexion à une base de données dans le build path de ton projet odbc (télécharges le sur internet).

Ensuite, tu trouveras des tutoriels sur internet (en particulier celui du site du zero) qui t'expliquera comment connecter ton appli à la base et voilà.

Poses d'autres questions une fois que tu auras fait ca ou si ca nbe marche pas.
Commenter la réponse de cs_Julien39
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 17 août 2011 à 18:52
0
Merci
salut ;o) ...
ben ca doit pas etre bien difficile vu que MySQL integre deja des fonction d import de fichier CSV ;o) ...
Donc si tu veux absolument le faire en java ;o) il te faut le connector JDBC correspond à ton SGBDR puis faire quelques ligne de code pour te connecter à ta base (exemple nombreux sur le site) et lancer la commande SQL d import... ;o) (il me semble que c est 'LOAD', à vérifier) ;o)

GL

GodConan ;o)
Commenter la réponse de cs_GodConan
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 18 août 2011 à 13:42
0
Merci
Bonjour Julien,

D'abord merci bien de m'avoir répondu.

Bon, je vais parler de mon sujet et puis je vais determiner là où je me bolque. Alors, mon application consiste à faire le reporting téléphonique : chaque mois l'organisme où je fais mon stage reçoit la facture des appels téléphoniques sous format excel. Et pour faire le suivi j'ai à stocker les données dans ma BD mysql pour l'interroger après.

Comme j'avais dit auparavant, j'ai réussi la conversion du fichier de format excel vers le format csv, aussi j'ai réussi à me connecter à la base de données.

Mon problème maintenant réside en l'import de données je ne sais pas comment je vais y procéder vu que j'ai plus de 1200 lignes dans mon fichier csv, aussi je peux pas imaginer comment ces données séparées par des virgules vont etre stockées chaqune dans sa case appropriée .

Cordialement
Commenter la réponse de cs_laritta
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 18 août 2011 à 13:49
0
Merci
Bonjour Goodconan,

Merci bien de m'avoir répondu.

Cette requête "LOAD" va faire l'affaire càd elle va importer toutes les données sauvegardées dans mon fichier ?

Cordialement
Commenter la réponse de cs_laritta
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 15:03
0
Merci
Bonjour GoodConan,

Oui vous avez bien raison, la requete c'est load data local infile.
Bon, je l'avais tester plusieurs fois sur mysql et ça marche très bien, mais lorsque je l'essaye sous eclipse ça marche pas
SVP j'ai vraiment besoin de votre aide.
Voici les lignes de code que j'utilise:

String query = "LOAD DATA LOCAL INFILE 'C:\\Documents and Settings\\input.csv' INTO TABLE trial FIELDS TERMINATED BY ',' IGNORE 2 LINES";


ResultSet results;

try{

Statement stmt = con.createStatement();

results = stmt.executeQuery(query);

stmt.close();
}

catch(Exception e){
System.out.println("exception due à la requête");
}

}
Commenter la réponse de cs_laritta
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 19 août 2011 à 15:24
0
Merci
Il est possible que tu n'ais pas validé les insertions sous java à l'aide d'un COMMIT.

Ou alors si ca ne fonctionne pas, dis nous ce qui se passe : exception ou les données ne sont pas insérées ?
Commenter la réponse de cs_Julien39
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 16:13
0
Merci
Bonjour Julien,

Vu que je suis débutante, je ne sais pas ce que vous voulez dire par valider les insertions sous java à l'aide d'un COMMIT ni comment le faire, ça serait très gentil de votre part si vous me l'expliquer.


Pour le code que j'ai actuellement, il s'agit d'une exception et voici le message d'erreur:
exception due à la requête
Commenter la réponse de cs_laritta
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 19 août 2011 à 16:36
0
Merci
Bonjour,

Le COMMIT est une requête SQL qui sert à valider les modifications effectuées sur une base de données. Une fois que tes modifications sont faites, soumet la requête "COMMIT" et les modifications sont enregistrées.

Parfois les bases ont un autocommit qui permet de ne pas avoir à envoyer cette requête.

Je ne sais pas ce qu'il en est chez toi.
Commenter la réponse de cs_Julien39
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 19 août 2011 à 16:39
0
Merci
pour connaitre l exception levée ...
remplace :
System.out.println("exception due à la requête");
par :
System.out.println("exception due à la requête : " + e );

Julien39 (salut) il ne me semble pas qu un commit soit nécessaire.
GodConan ;o)
Commenter la réponse de cs_GodConan
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 17:01
0
Merci
Bonjour,

J'ai rajouté le code suivant, mais le problème persiste et j'ai encore le même message d'erreur. Voici le code rajouté:

boolean autoCommitDefault = conn.getAutoCommit();
try {
conn.setAutoCommit(false);


conn.commit();
} catch (Throwable e) {
try { conn.rollback(); } catch (Throwable ignore) {}
throw e;
} finally {
try { conn.setAutoCommit(autoCommitDefault); } catch (Throwable ignore) {}
}
Commenter la réponse de cs_laritta
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 19 août 2011 à 17:13
0
Merci
bon!! reprend toi ;o) montre nous du code propre et une véritable exception ...
y a forcement un probleme quelque part ;o)


GodConan ;o)
Commenter la réponse de cs_GodConan
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 17:18
0
Merci
Bonjour GoodConan,

Voici le code :

import java.sql.*;



public class Connexion {

public static void main(String[] args) throws Throwable{

Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/db";
Connection con = DriverManager.getConnection(url, "root", "root");

if(con == null){

System.out.println("la connexion n'est pas établie");
}else{

System.out.println("Welcome to db");
}


String query = "LOAD DATA LOCAL INFILE 'C:\\Documents and Settings\\input.csv' INTO TABLE trial FIELDS TERMINATED BY ',' IGNORE 2 LINES";


ResultSet results;

try{

Statement stmt = con.createStatement();

results = stmt.executeQuery(query);

boolean autoCommitDefault = conn.getAutoCommit();
try {
conn.setAutoCommit(false);


conn.commit();
} catch (Throwable e) {
try { conn.rollback(); } catch (Throwable ignore) {}
throw e;
} finally {
try { conn.setAutoCommit(autoCommitDefault); } catch (Throwable ignore) {}
}



stmt.close();
}

catch(Exception e){
System.out.println("exception due à la requête");
}

}
}


Et voici ce que j'ai comme output
Commenter la réponse de cs_laritta
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 17:22
0
Merci
Déesolée, je suis un petit peu perturbée :(
voici le output :

Welcome to db
exception due à la requête
Commenter la réponse de cs_laritta
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 19 août 2011 à 17:41
0
Merci
pfff ... fait tout de meme quelques effort ..; lis me messages et aplique au moins ce que l n te dit...
change ton sysout et donne nous l exeption levé...

catch(Exception e){
System.out.println("exception due à la requête" + e );
}

}

ca sert à rien si tu n affiche pas l exception..

GodConan ;o)
Commenter la réponse de cs_GodConan
cs_laritta 11 Messages postés mercredi 17 août 2011Date d'inscription 27 décembre 2011 Dernière intervention - 19 août 2011 à 20:21
0
Merci
Bonsoir GoodConan,

Excusez moi,je suis encore debutante c'est pour cela que je n'ai pas accorder de l'attention au message d'erreur.

Bon, j'ai fait ce que vous m'avez propose et voici le output :

exception due a la requete java.sql.SALException : Can not issue data manipulation statements with executeQuery().
Commenter la réponse de cs_laritta

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.