Идея ...
Создайте промежуточную (временную) базу данных в mysql с таблицей excel_staging, которая соответствует структуре вашего файла Excel - используйте для этой таблицы механизм myisam.
Используйте загрузку данных в файле для загрузки файла Excel (сохраненного в формате csv) в таблицу excel_staging - заполнение не должно занимать более нескольких минут, особенно если это myisam.
truncate table excel_staging;
load data infile 'excel_staging.csv'
into table excel_staging
fields terminated by...
lines terminated by..
(
field1,
field2,
...
);
Записать много выбора в выходной файлоператоры, которые извлекают данные из таблицы excel_staging в отдельные файлы csv, которые вы будете использовать для загрузки в ваши отдельные таблицы производственной базы данных innodb .При необходимости вы можете проявить творческий подход - вам, возможно, даже придется загрузить дополнительные данные для поддержки объединений и т. Д., Чтобы вы могли сгенерировать красиво отформатированный вывод csv.
select distinct cust_id, name into outfile 'customers.csv'
fields termniated by...
lines terminated by...
from
excel_staging
order by
cust_id; -- order for innodb import
select distinct dept_id, name into outfile 'departments.csv'
fields termniated by...
lines terminated by...
from
excel_staging
order by
dept_id;
Загрузить красиво отформатированный, очищенный и упорядоченныйпо CSV-файлам первичного ключа в ваши производственные таблицы innodb, используя данные загрузки данных ...
load data infile 'customers.csv'
into table customers
fields terminated by...
lines terminated by..
(
cust_id,
name
);
...
За исключением времени на кодирование решения (скажем, 30 минут), его можно загружать в стадии подготовки, выводить в CSV изагрузить в рабочие таблицы примерно за мммм ... 6 минут подряд.
Надеюсь, это поможет.