Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Можно ли с Excel таблицы слить данные в MySQL?


Автор: ARTi13 8.4.2008, 01:55
Доброго всем времени суток!

Кто нибудь пробовал  с Excel таблицы слить данные в MySQL, возможно ли такое осуществить?





Автор: n0ns3ns3 8.4.2008, 07:20
сохранить лист как *.CSV а потом http://us.php.net/fgetcsv (: 

Автор: mishaSL 8.4.2008, 10:00
Ссылка по теме:
http://forum.vingrad.ru/forum/topic-137193/hl/excel/index.html

Автор: bars80080 8.4.2008, 10:18
судя по тому что пишут на форумах .xls распарсить весьма и весьма проблематично из-за используемых майкрософтом стандартов

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

Автор: ARTi13 10.4.2008, 09:15
Попробовал то, что предложил n0ns3ns3, перешёл на ссылку и не обнаружил там не одного примера, где показывается заполнения данных в MySQL с Excel.
Так же попробовал SQL скрипт предложенный mishaSL, не получается его осуществить он точно правильный?

Почему возник ввопрос да потому, что когда набираешь команды 
Код

OPTIONALLY ENCLOSED BY '\"' 
 ESCAPED BY '\\\'


то клиент MySQL выдаёт надпись что не знает таких команд т.е. Unknown command '\\'.
and Unknown command '\''.
Код написан верно?
Код

LOAD DATA LOW_PRIORITY LOCAL INFILE '/export.csv'
        REPLACE
        INTO TABLE `table_name`
        FIELDS
            TERMINATED BY '|'
            OPTIONALLY ENCLOSED BY '\"'
            ESCAPED BY '\\\'
        LINES TERMINATED BY '\\r\\n'
        (`pole1`, `pole2)";

Помогите разобраться, что не так, пожалуйста!   

Автор: mishaSL 10.4.2008, 12:04
Цитата(ARTi13 @  10.4.2008,  09:15 Найти цитируемый пост)
Код написан верно?

Дак запустите этот код, если возникают ошибки, то выложите сюда их текст.

Автор: n0ns3ns3 23.4.2008, 06:10
как это нет примера.. эмм

Код

<?php
$row = 1;
$handle = fopen("test.csv", "r"); //открываем
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //читаем и заносим элементы строк csv файла в массив $data
    $num = count($data); //общее число строк в файле
    $row++;
    for ($c=0; $c < $num; $c++) { 
        echo $data[$c] . "<br />\n"; //тут мы просто выводим содержимое массива $data, но можно также делать INSERT данных (элементы массива $data[]) в таблицу MySQL, как это делается, думаю, объяснять не стоит
    }
}
fclose($handle); //закрываем
?>

Автор: bars80080 23.4.2008, 08:59
to n0ns3ns3, а без перевода в csv есть? (файлы .xls)

Автор: Glip 23.4.2008, 10:10
http://www.google.com/search?client=opera&rls=ru&q=xls+php&sourceid=opera&ie=utf-8&oe=utf-8

в частности найдено:
http://www.paggard.com/projects/xls.reader/

или 

http://pear.php.net/search.php?q=spread&in=packages&x=0&y=0

Автор: ARTi13 24.4.2008, 07:13
MishaSL не могу избавится от возникающей ошибки.
Цитата

Дак запустите этот код, если возникают ошибки, то выложите сюда их текст. 

Где ошибка ниже мною написанный код? Подскажите

Код

mysql> use directory;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_directory |
+---------------------+
| export              |
| sdirectory          |
+---------------------+
2 rows in set (0.02 sec)

mysql> select * from export;
Empty set (0.01 sec)

  mysql> LOAD DATA LOW_PRIORITY LOCAL INFILE '/export.csv'
    -> REPLACE
    -> INTO TABLE `export`
    -> FIELDS
    -> TEMINATED BY '|'
    -> OPTIONALLY ENCLOSED BY '\"'
    -> ESCAPED BY '\\\'
    '> LINES TERMINATED BY '\\r\\n'
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\\'.
    '>


Спасибо n0ns3ns3  выложенный  Тобой  код работает, я его сразу не увидел в той ссылке,  может от невнимательности, а может и от недостаточного подробного комментария поясняющего его работу или времени потраченное на ссылку.  Сама ссылка очень познавательная. 
Но у меня мало опыта в программировании в php и в базах данных тоже, сейчас наверстываю упущенный пробел в знаниях, т.к. необходимо решить задачу в создании телефонного справочника. Получается пока медленно, но иду как мне кажется в правильном направлении smile   
Цитата

for ($c=0; $c < $num; $c++) { 
        echo $data[$c] . "<br />\n"; //тут мы просто выводим содержимое массива $data, но можно также делать INSERT данных (элементы массива $data[]) в таблицу MySQL, как это делается, думаю, объяснять не стоит
    }

Не могли ли вы n0ns3ns3 предоставить мне пример, ссылку,  как  делать INSERT данных (элементы массива $data[]) в таблицу MySQL.
Заранее спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)