Лучший способ импортировать файл Excel объемом 1 ГБ (около 600 000 записей) для импорта в базу данных MySQL

#mysql #excel #laravel #import #amazon-rds

#mysql #excel #laravel #импорт #amazon-rds

Вопрос:

В настоящее время для импорта всех записей в MySQL из загруженного файла Excel требуется 8 часов. Файл Excel составляет около 1 ГБ (содержит около 600 000 записей).

Мы используем массовый импорт, мы не зацикливаемся на записях.

  1. Что нужно сделать, чтобы ускорить это?
  2. Каков наилучший поворот во времени, который может быть для этого импорта?

Это приложение laravel, экземпляр RDS и компьютер EC2 (16 ГБ памяти)

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

1. `lakh’ эквивалентно 100 000, поэтому существует около 600 000 записей (см.: Lakh

2. @Luuk Правильно, заменил 6 лакхов на 600 000 в вопросе

3. Вопрос здесь в том, что занимает время в запросе? 8 часов — это слишком много для 1 ГБ данных. Там, где я работаю, нам требуется около 8 часов для резервного копирования около 2 ТБ данных (и мы делаем это довольно неэффективно, так что даже это может быть слишком много), поэтому вам может потребоваться проверить весь ваш процесс и посмотреть, где есть узкие места. Например INSERT INTO ... , это будет очень медленно, потому что перед каждой вставкой будет выполняться поиск по уникальным полям для обеспечения целостности данных.

4. Сохраните данные файла Excel в формате CSV, затем используйте LOAD DATA INFILE для импорта. Среднее время импорта 1 ГБ должно составлять ~ 1-5 минут.

5. Немного сложно сказать вам, что вы могли бы улучшить в своем коде, если мы не видим ваш код. На второй вопрос невозможно ответить — зависит от слишком многих факторов, включая производительность компьютера, выполняющего импорт, другие задачи, которые выполняет компьютер, Конфигурацию mysql и т. Д.