Bonjour à tous,
Je voudrais importer les données contenues dans un fichier CSV vers ma base de données Oracle.
Voici le code que j'utilise :
Tout d'abord j'ai une question : le fichier CSV se trouvera sur la machine cliente et ce code sur serveur un distant. Est ce que je peux me servir d'un BufferedReader pour lire le fichier CSV sur la machine cliente ? Si oui, est ce que c'est une bonne solution enterme de performances ? Si non , qu'elle est la solution que je dois utiliser ?
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 String ligne; String [] header = null; try { BufferedReader br = new BufferedReader(new FileReader(file)); while((ligne=br.readLine()) != null) { if (ligne.startsWith("id")){ header = ligne.split("\\;"); ligne=br.readLine(); } WebVisitor webVisitor = new WebVisitor(); WebVisitorSite webVisitorSite = new WebVisitorSite(); String[] splitted = ligne.split("\\;"); webVisitor.setTitle(splitted[1]); webVisitor.setLastname(splitted[2]); webVisitor.setLastname2(splitted[3]); webVisitor.setFirstname(splitted[4]); webVisitor.setEmail(splitted[5]); webVisitorDao.saveWebVisitor(webVisitor); webVisitorSite.setWebVisitor(webVisitor); webVisitorSite.setSite(siteDao.getSite(new Integer(2))); webVisitorSite.setValidated(Boolean.valueOf(splitted[27]).booleanValue()); for (int i=28;i<header.length;i++){ webVisitorSite.setAttribut(header[i], splitted[i]); } webVisitorSiteDao.saveWebVisitorSite(webVisitorSite); } } br.close(); } catch (Exception e){ e.printStackTrace(); } }
Ensuite, je rencontre un problème pour récupérer les champs vides. Si mes dernieres colonnes de mon fichier CSV sont vides, Excel ne me génère pas les séparateurs, ce qui fait que je ne peux pas récupérer mes dernières valeurs (et il se trouve que j'en ai besoin bien sur) Est ce que quelqu'un aurait une idée sur la façon de régler ce problème ?
Troisième question : je récupère le chemin de mon fichier depuis un "input type=file" depuis une jsp. Depuis IE, je récupère le chemin de mon fichier compte et sur Firefox seulement le nom du fichier. J'ai donc fait un petit script qui me retourne la valeur du champ "file" dans un champ caché. Jusqua là, pas de problème. Une fois mon chemin récupérer, et comme je travaille sur windows, je dois modifier ma chaîne de caractère pour qu'elle puisse être interprétée par l'OS.
Pour être plus précise, je récupère cette chaîne depuis ma JSP :
Je le transforme pour qu'elle ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C:\dev\projets\test.csv
Ma question est : existe t-il une méthode pour faire ce genre de choses de façon plus propre qu'avec un replaceAll et qui serait compatible avec Windows et Unix ? J'ai vu que je pouvais me servir du File.separatorChar mais je n'arrive pas à l'utiliser correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C:\\dev\\projets\\test.csv
Quelqu'un aurait il déjà fait ce genre de choses ?
Merci beaucoup pour votre aide.
Audrey
Partager