PDA

Просмотр полной версии : Чтение из .xls


Naydav
28.04.2007, 14:09
Нужно обновлять таблицу базы данных из формата XLS...

Имееться прайс ,
С этого прайса беруться цены для интернет-магазина и записываються в бд

и что бы не вводить(обновлять бд вручную) через админку, нужно написать скрипт, который будет парсить этот файл в базу данных, есно заменяя старые и добавляя новые.

У меня есть вариант решения, такой:

сохранять файл в фрмате .csv, потом считывать его, например fopen()+explode(), и потом обрабатывать соответствующие елементы массива

но как проверять новые элементы?
т. е. брать определенный элемент(по имени) и сравнивать есть ли такой в полученных массивах?

но если товаров(записей) например 1000, и в новом прайсе например позиций 100

то каждый елемент, нужно сравнить с 1000 элементов уже присутствующих. а если елементов 100, то получаеться 100*1000 = 100 000 сравнений...

возможен конечно вариант - LOAD DATA LOCAL INFILE, и использование временной таблицы в MySql
ведь в бд действия быстрее будут обрабатываться...

рационален ли этот метод?
может кто-то сталкивался с подобной проблемой?
что вы посоветуете?

ps заранее благодарен!!!

Naydav
28.04.2007, 16:28
$sql= "LOAD DATA LOW_PRIORITY INFILE './date.txt' REPLACE INTO TABLE csv FIELDS TERMINATED BY ';' one,two,three
LINES TERMINATED BY '\n' STARTING BY ' ' ";

Всб ночь не спал - голова не варит,
что я не так делаю...

hidden
28.04.2007, 21:22
А откуда ты это взял? TERMINATED BY ';' one,two,three
там же поля запятыми разделяются.

Думаю что-то вроде:$sql= 'LOAD DATA LOW_PRIORITY INFILE "./date.txt" REPLACE INTO TABLE csv FIELDS TERMINATED BY "," ENCLOSED BY "" ESCAPED BY "" LINES TERMINATED BY "\n" (col1,col2,...)';

Naydav
03.05.2007, 14:16
там же поля запятыми разделяются

да точка-запятой разделяються

1;1;1
1;;
1;;