Я бы вставил данные из Excel в MySQL
с помощью PHP
но мне нужно немного проверить, прежде чем помещать данные в реальную таблицу. Я попробовал 2 варианта, и оба варианта работают для меня.
Опция 1
Прочитайте данные Excel в массиве. Зацикливание массива, извлечение каждого значения и проверка данных. Затем вставьте в реальный стол. ИЛИ ЖЕ
Вариант 2
Массовая загрузка данных в временную таблицу в дБ. Вызовите процедуру и выполните правильную проверку. После завершения проверки переместите данные из временной таблицы в реальную таблицу.
Я знаю, что оба варианта достижимы, но я больше беспокоюсь о производительности. Кто-нибудь знал, какой из них лучше по производительности. Другими словами, может выполнить быстрее. Любые советы или ссылки высоко ценятся.
Я не знаю, будет ли проверка вашей строки данных Excel для каждой строки быстрее, но это спасет вас от массивов, хранящихся в памяти.
Извлечь строку Excel -> проверить строку -> вставить в БД
Мне лично не нравятся массовые вставки.
Если вы хотите скорость, не обрабатывайте один ряд за раз. Вместо этого используйте то, в чем SQL хорош — применяя то же самое к массиву (таблице) значений.
Допустим, вы хотите превратить пустые строки в NULL для столбца foo
, Это будет сделано для всей таблицы:
UPDATE tbl SET foo = NULL WHERE foo = '';
Просто. Быстро. Очень эффективный.
Уберите знаки доллара и комы из цифр. Например, $1,234.56
-> 1234.56
,
VARCHAR
, а не числовое поле.DECIMAL(11,2)
,Затем,
UPDATE tbl SET amt = REPLACE(REPLACE(amt_str, ',', ''), '$', '');
Если вы используете LOAD DATA
Вы можете сделать оба эти примера внутри утверждения. (И избегайте лишних столбцов.)