Вы хотели бы сделать executeBatch () , которая похожа на подход # 1.Таким образом, в основном вы читаете данные из электронной таблицы для размера пакета (т. Е. 1000 записей), а затем делаете фиксацию для транзакций пакета за раз в БД.После этого переходите к следующей партии и так далее, и так далее.При таком подходе вы эффективно используете базу данных, сохраняете свои сетевые поездки, а также не теряете много данных в памяти, что может привести к исключениям нехватки памяти.Вам также следует повторно использовать то же соединение и подготовленные объекты операторов.
Что касается процесса очистки данных, вы должны обязательно продезинфицировать свои данные, прежде чем помещать их в постоянное хранилище, такое как таблица.В будущем вам может понадобиться создавать отчеты или использовать данные в других приложениях, поэтому наличие в будущем чистых и хорошо структурированных таблиц поможет вам в долгосрочной перспективе.Для пакетных приложений обычно требования к производительности не так высоки, как для транзакционных систем.
Вам также следует использовать вспомогательную библиотеку, например apache poi , для чтения документов Excel.Что касается структуры данных, то она будет зависеть от ваших данных, но обычно здесь достаточно ArrayList.
Еще один момент, который вы могли бы рассмотреть, заключается в том, что, как правило, большинство инструментов ETL предлагают такие виды задач загрузки данных изкоробка.Если ваша ситуация позволяет это сделать, я настоятельно рекомендую для загрузки данных использовать инструмент ETL, например Kettle .Возможно, вам удастся сэкономить время и освоить новый инструмент.
Надеюсь, это поможет!