Excel загрузить в MySQL — производительность

Я бы вставил данные из Excel в MySQL с помощью PHP но мне нужно немного проверить, прежде чем помещать данные в реальную таблицу. Я попробовал 2 варианта, и оба варианта работают для меня.

Опция 1
Прочитайте данные Excel в массиве. Зацикливание массива, извлечение каждого значения и проверка данных. Затем вставьте в реальный стол. ИЛИ ЖЕ
Вариант 2
Массовая загрузка данных в временную таблицу в дБ. Вызовите процедуру и выполните правильную проверку. После завершения проверки переместите данные из временной таблицы в реальную таблицу.

Я знаю, что оба варианта достижимы, но я больше беспокоюсь о производительности. Кто-нибудь знал, какой из них лучше по производительности. Другими словами, может выполнить быстрее. Любые советы или ссылки высоко ценятся.

0

Решение

Я не знаю, будет ли проверка вашей строки данных Excel для каждой строки быстрее, но это спасет вас от массивов, хранящихся в памяти.

Извлечь строку Excel -> проверить строку -> вставить в БД

Мне лично не нравятся массовые вставки.

1

Другие решения

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

Допустим, вы хотите превратить пустые строки в NULL для столбца foo, Это будет сделано для всей таблицы:

UPDATE tbl SET foo = NULL  WHERE foo = '';

Просто. Быстро. Очень эффективный.

Уберите знаки доллара и комы из цифр. Например, $1,234.56 -> 1234.56,

  1. Читать в VARCHAR, а не числовое поле.
  2. Иметь (или добавить) столбец с числовым полем, скажем DECIMAL(11,2),

Затем,

UPDATE tbl SET amt = REPLACE(REPLACE(amt_str, ',', ''), '$', '');

Если вы используете LOAD DATAВы можете сделать оба эти примера внутри утверждения. (И избегайте лишних столбцов.)

0

По вопросам рекламы [email protected]