#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. Не могли бы вы объяснить, почему и как этот код дает ответ на вопрос?