Naydav
28.04.2007, 14:09
Нужно обновлять таблицу базы данных из формата XLS...
Имееться прайс ,
С этого прайса беруться цены для интернет-магазина и записываються в бд
и что бы не вводить(обновлять бд вручную) через админку, нужно написать скрипт, который будет парсить этот файл в базу данных, есно заменяя старые и добавляя новые.
У меня есть вариант решения, такой:
сохранять файл в фрмате .csv, потом считывать его, например fopen()+explode(), и потом обрабатывать соответствующие елементы массива
но как проверять новые элементы?
т. е. брать определенный элемент(по имени) и сравнивать есть ли такой в полученных массивах?
но если товаров(записей) например 1000, и в новом прайсе например позиций 100
то каждый елемент, нужно сравнить с 1000 элементов уже присутствующих. а если елементов 100, то получаеться 100*1000 = 100 000 сравнений...
возможен конечно вариант - LOAD DATA LOCAL INFILE, и использование временной таблицы в MySql
ведь в бд действия быстрее будут обрабатываться...
рационален ли этот метод?
может кто-то сталкивался с подобной проблемой?
что вы посоветуете?
ps заранее благодарен!!!
Имееться прайс ,
С этого прайса беруться цены для интернет-магазина и записываються в бд
и что бы не вводить(обновлять бд вручную) через админку, нужно написать скрипт, который будет парсить этот файл в базу данных, есно заменяя старые и добавляя новые.
У меня есть вариант решения, такой:
сохранять файл в фрмате .csv, потом считывать его, например fopen()+explode(), и потом обрабатывать соответствующие елементы массива
но как проверять новые элементы?
т. е. брать определенный элемент(по имени) и сравнивать есть ли такой в полученных массивах?
но если товаров(записей) например 1000, и в новом прайсе например позиций 100
то каждый елемент, нужно сравнить с 1000 элементов уже присутствующих. а если елементов 100, то получаеться 100*1000 = 100 000 сравнений...
возможен конечно вариант - LOAD DATA LOCAL INFILE, и использование временной таблицы в MySql
ведь в бд действия быстрее будут обрабатываться...
рационален ли этот метод?
может кто-то сталкивался с подобной проблемой?
что вы посоветуете?
ps заранее благодарен!!!