Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Импорт CSV в базу данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Deonis
Отправлено: 16 Мая, 2016 - 20:35:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Приветствую! Хотелось бы найти оптимальный алгоритм для импорта данных. Начну с маленького абстрактного примера:
CODE (htmlphp):
скопировать код в буфер обмена
  1. |Назв. | Бренд |Цена|Кол.|       Цвета       |
  2. ------------------------------------------------
  3. Товар 1;Samsung;5555;1000;белый,синий,красный;

В данном случае, нужно:
1. В таблицу `products` записать/обновить: Название, Цену, Кол-во, а вместо названия бренда - его ID из соответствующей таблицы (напр., `brand`). Если такого бренда не существует, то предварительно записать его.
2. Варианты цветов, записать в другую таблицу. Пусть это будет `product_option`, куда записывается id товара, и id цвета. Как и с брендами, если цвета не существует, то его нужно сначала внести в таблицу `colors`.
Имеет ли смысл записывать все данные сначала во временную таблицу и писать процедуру для всех вышеперечисленных действий или же просто обрабатывать в цикле на уровне PHP каждую строку? Второй способ смущает тем, что для каждой строки реальных данных, возможно придётся делать до ~20 запросов. Сервер (VDS) слабенький: одно ядро 3.2 ГГц, 1Gb оперативки. Поэтому первый вариант, по чисто субъективному мнению, должен быть менее расточительный. К примеру, для тех же брендов, получится всего два запроса:
1. Первым запросом запись/обновление в таблицу `brand` - INSERT ... ON DUPLICATE KEY UPDATE
2. Вторым запросом - замена названий на идентичные им ID
Вроде бы и проще, и менее затратно по ресурсам, однако так ли оно на самом деле - не знаю.
В общем, хотелось бы послушать, как справлялись те, кто с данной задачей уже сталкивался и какие способы проверил на практике. Спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB