Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Чтение из .xls (https://forum.antichat.xyz/showthread.php?t=39081)

Naydav 28.04.2007 14:09

PHP: Чтение из .xls, рационален ли метод?
 
Нужно обновлять таблицу базы данных из формата 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;;


Время: 11:36