1 pièce(s) jointe(s)
Importer données csv file à la base
Bonjour,
je suis entrain de créer une interface qui va uploader un fichier csv depuis un poste local vers notre serveur.
Ce fichier contient des informations acquises depuis une station météo, En effet il s'agit de récupérer toutes ces informations et les stocker dans des tables(colonnes) de la base mysql.
Dans un premier temps j'ai fait une servlet qui fait le upload de fichier et le stocker temporairement dans le rép /build/web/uploads/
Code:
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
// if the request type is multipart/form-data
if (isMultipart) {
//create a file upload factory and upload servlet
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//parse the request List de type FileItem
List items = upload.parseRequest(request);
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();
if (!item.isFormField()) {
String fileName = item.getName();
String root = getServletContext().getRealPath("/");
File toSave = new File(root + "/uploads");
if (!toSave.exists()) {
boolean status = toSave.mkdirs();
}
File uploadedFile = new File(toSave + "/" + fileName);
item.write(uploadedFile);
out.println("File "+ fileName + " is uploaded successfully at the path " + root);
InputStream input =item.getInputStream(); // le fichier dans la mémoire
OutputStream output = new FileOutputStream("G:\\out.csv");
int readBytes=0;
long length = fileName.length();
byte[] bytes = new byte[(int)length];
while((readBytes = input.read(bytes,0,(int)length)) != -1) {
output.write(bytes, 0, readBytes);
}
input.close();
output.flush();
output.close();
input.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception ex) {
Logger.getLogger(FileUploadServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
//
}
}
} |
Ce code upload avec succés le fichier dans le répertoire désigné. par contre ce fichier doit être traité et parsé avant de stoker ces informations à la base de donnée.
Ici, je bloque.
Toute aide est appréciée. je mets le fichier exemple en annexe
Merci,