Каким способом было бы лучше импортировать данные электронной таблицы? - PullRequest
1 голос
/ 20 декабря 2011

Я пытаюсь импортировать данные из таблицы в базу данных, используя Java. Есть два способа, которыми я мог бы сделать это: 1) Чтение и извлечение данных из электронных таблиц и их организация в структуры данных, такие как ArrayLists, Векторы или карты различных объектов, чтобы я мог избавиться от избыточных записей и т. Д., Затем написать структуры данных в базу данных. 2) Извлеките данные и поместите их в базу данных непосредственно при считывании и извлечении ячеек. Я думаю, что первый способ, вероятно, лучше, но второй будет быстрее? Любые другие соображения, которые я должен думать?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

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

Что касается процесса очистки данных, вы должны обязательно продезинфицировать свои данные, прежде чем помещать их в постоянное хранилище, такое как таблица.В будущем вам может понадобиться создавать отчеты или использовать данные в других приложениях, поэтому наличие в будущем чистых и хорошо структурированных таблиц поможет вам в долгосрочной перспективе.Для пакетных приложений обычно требования к производительности не так высоки, как для транзакционных систем.

Вам также следует использовать вспомогательную библиотеку, например apache poi , для чтения документов Excel.Что касается структуры данных, то она будет зависеть от ваших данных, но обычно здесь достаточно ArrayList.

Еще один момент, который вы могли бы рассмотреть, заключается в том, что, как правило, большинство инструментов ETL предлагают такие виды задач загрузки данных изкоробка.Если ваша ситуация позволяет это сделать, я настоятельно рекомендую для загрузки данных использовать инструмент ETL, например Kettle .Возможно, вам удастся сэкономить время и освоить новый инструмент.

Надеюсь, это поможет!

2 голосов
/ 20 декабря 2011

Вы можете рассмотреть возможность использования инструментов ETL (Извлечение, Преобразование и Загрузка) для вида задачи, к которой вы обращаетесь

...