Как сохранить уникальные данные из Excel в базу данных (используя apache poi)?

#java #database #apache-poi

#java #База данных #apache-poi

Вопрос:

Как сохранить уникальные данные из ячеек (например, номер телефона и идентификатор электронной почты должны быть уникальными) в Excel в базу данных, если на листе существует несколько повторяющихся значений (с использованием apache poi)?

ниже приведен код для чтения данных Excel и отправки их в базу данных mysql

открытый класс ExcelToDatabase {

 public static void main(String[] args) throws SQLException, IOException {
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName","root","root");
    Statement statement = con.createStatement();
    
    
    FileInputStream fis = new FileInputStream("/home/ist/Proj/ApachePOI/datafiles/TestData.xlsx");
    XSSFWorkbook workbook = new XSSFWorkbook(fis);
    XSSFSheet sheet = workbook.getSheetAt(0);
    
    int rows = sheet.getLastRowNum();
    
    for(int r=1; r<=rows; r  ) {
        
        XSSFRow row = sheet.getRow(r);
        double EmpId = row.getCell(0).getNumericCellValue();
        String fName = row.getCell(1).getStringCellValue();
        String lName = row.getCell(2).getStringCellValue();
        int Age = (int) row.getCell(3).getNumericCellValue();
        String Email = row.getCell(4).getStringCellValue();
        String Phone = row.getCell(5).getStringCellValue();
        
        
        String sql = "INSERT INTO table_name values('" EmpId "','" fName "','" lName "', '" Age "','" Email "', '" Phone "')";
        statement.execute(sql);
        statement.execute("commit");
        
    }
    workbook.close();
    fis.close();
    con.close();
    
    System.out.println("data has been exported to the Database");
}
 

Комментарии:

1. Один из подходов заключается в чтении данных Excel, как вы это делаете, и сохранении поля электронной почты в HashSet. Затем выполните итерацию HashSet для сохранения в вашей БД. Кроме того, я заметил, что вы совершаете транзакцию после каждого оператора insert. Это не очень хорошая практика, если этого не требует ваш бизнес-логин.

Ответ №1:

 public static void main(String[] args) throws SQLException, IOException {
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName","root","root");
    Statement statement = con.createStatement();
    
    
    FileInputStream fis = new FileInputStream("/home/ist/Proj/ApachePOI/datafiles/TestData.xlsx");
    XSSFWorkbook workbook = new XSSFWorkbook(fis);
    XSSFSheet sheet = workbook.getSheetAt(0);
    
    int rows = sheet.getLastRowNum();
}
 

Комментарии:

1. Не могли бы вы объяснить, почему и как этот код дает ответ на вопрос?