Mysql

使用 Java 中的多執行緒同時更新表中的行

  • October 25, 2015

我有一個包含 50000 行的 excel 文件,我正在通過從 Java 程序上傳該 excel 文件來使用休眠更新 MySQL 表。更新所有行需要很長時間。如果我在excel文件中劃分100行的批次並將不同批次的行分配給不同的執行緒以同時從多個執行緒更新表中的行,是否有可能?

您可以將文件拆分為多個文件。

嘗試POI-HSSF 和 POI-XSSF - Java API 訪問 Microsoft Excel 格式文件(Apache POI 項目)

下面是一個如何讀取 Excel 文件的範例:

   POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
   HSSFWorkbook wb = new HSSFWorkbook(fs);
   HSSFSheet sheet = wb.getSheetAt(0);
   HSSFRow row;
   HSSFCell cell;

   int rows; // No of rows
   rows = sheet.getPhysicalNumberOfRows();

   int cols = 0; // No of columns
   int tmp = 0;

   // This trick ensures that we get the data properly even if it doesn't start from first few rows
   for(int i = 0; i < 10 || i < rows; i++) {
       row = sheet.getRow(i);
       if(row != null) {
           tmp = sheet.getRow(i).getPhysicalNumberOfCells();
           if(tmp > cols) cols = tmp;
       }
   }

   for(int r = 0; r < rows; r++) {
       row = sheet.getRow(r);
       if(row != null) {
           for(int c = 0; c < cols; c++) {
               cell = row.getCell((short)c);
               if(cell != null) {
                   // Your code here
               }
           }
       }
   }
} catch(Exception ioe) {
  }

如果更新所有 50K 行是一種常見做法,那麼您設計的架構是錯誤的。請詳細說明架構;當您獲取數據時,我們可能會建議“更新”發生的方式。

引用自:https://dba.stackexchange.com/questions/115934