Я работаю над проектом или хочу загрузить файл Excel CSV, который содержит данные из таблицы в моей базе данных, используя запрос LOAD DATA LOCAL
, я проверяю запрос, используя полный путь к файлу с его путь (пример C: //../file.csv
) непосредственно в запросе работает без проблем, я хотел работать с библиотекой primefaces p: fileUpload
, и когда я выбираю файл CSV со своего рабочего стола или из другого каталога на моем компьютере, он возвращает только имя файла, который я выбрал, а не полный путь попадания у меня ошибка:
org.hibernate.exception.GenericJDBCException: could not execute statement
java.io.FileNotFoundException: extraction1.csv (The specified file can not be found)
Принудительно, потому что нет полного пути к файлу с именем папки, я хочу вернуть имя файла с его корневыми файлами, из которого я выбрал, чтобы мой запрос мог выполняться правильно, как показано в коде ниже, я хочу, чтобы путь, где находится файл, когда я выбираю, также возвращался с именем рассматриваемого файла, и спасибо.
prelevServ.importToDB("C:\\Users\\helyoubi\\Desktop\\Japon 2\\"+fichierUpload.getFileName());
Моя форма JSF:
<h:form enctype="multipart/form-data">
<p:growl id="messages" showDetail="true" />
<p:fileUpload label="Choisir" value="#{importFichier.fichierUpload}" mode="simple" skinSimple="true"/>
<p:separator/>
<p:commandButton value="Envoyer" ajax="false" action="#importFichier.importation}" />
</h:form>
Моя формула управляемого бина:
@ManagedBean
public class ImportFichier implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private UploadedFile fichierUpload;
private PrelevementServices prelevServ = new PrelevementServicesImpl();
public UploadedFile getFichierUpload() {
return fichierUpload;
}
public void setFichierUpload(UploadedFile fichierUpload) {
this.fichierUpload = fichierUpload;
}
public void importation() {
if(fichierUpload.getFileName()!= null) {
//prelevServ.importToDB("C:\\Users\\helyoubi\\Desktop\\Japon 2\\"+fichierUpload.getFileName());
prelevServ.importToDB(fichierUpload.getFileName());
FacesMessage message = new FacesMessage("Succesful", fichierUpload.getFileName()+ " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}else {
FacesMessage message = new FacesMessage("Le chemin du fichier : "+fichierUpload.getFileName()+" est introuvable");
FacesContext.getCurrentInstance().addMessage(null, message);
}
System.out.println("CSV added to your the DB Table");
}
}
Мой запрос:
@Override
public void importToDB(String cheminFichier) {
session.beginTransaction();
session.createSQLQuery("LOAD DATA LOCAL INFILE :filename INTO TABLE Prelevement_saisons FIELDS TERMINATED BY ',' ENCLOSED BY '\"'(espece,saison,departement,commune,code,attributions,realisations)").setString("filename", cheminFichier).executeUpdate();
session.getTransaction().commit();
}