Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка данных из Excel в MySQL
 
 автор: krok-m   (24.10.2006 в 18:48)   письмо автору
 
 

У меня есть БД, работает - все OK. Одна проблема: мне приходится все данные забивать вручную. Я знаю, что можно делать так: загрузить на сервер файл EXCEL и база сама загрузит данные.
Подскажите, пожалуйста, как это сделать. Выручайте! Очень надо ! А то я скоро стану быстрей всех в мире печатать.

   
 
 автор: cheops   (24.10.2006 в 19:22)   письмо автору
 
   для: krok-m   (24.10.2006 в 18:48)
 

Возможно вас заинтересуют темы по ссылкам
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=5655
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3453
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4843

   
 
 автор: krok-m   (24.10.2006 в 19:47)   письмо автору
 
   для: cheops   (24.10.2006 в 19:22)
 

Я эти темы смотрел уже, там видно обсуждают другие этапы.
Мне желательно понять с нуля.
Пример:
Берем файл EXCEL ..........

   
 
 автор: cheops   (24.10.2006 в 19:52)   письмо автору
 
   для: krok-m   (24.10.2006 в 19:47)
 

1) Берём Excel-файл, сохраняем его как CSV-файл - это текстовый файл, поля в строке в котором разделены точкой с запятой.
2) Загружаем файл на сервер.
3) Разбираем загруженный файл либо при помощи стандартной функции fgetcsv(), либо при помощи регулярных выражений. В результате получается, как правило, массив.
4) Данные из массива записываем в базу данных.

   
 
 автор: krok-m   (24.10.2006 в 20:05)   письмо автору
 
   для: cheops   (24.10.2006 в 19:52)
 

1) 2) Сделал.
3) Разбираем загруженный файл либо при помощи стандартной функции fgetcsv(), либо при помощи регулярных выражений. В результате получается, как правило, массив. - Раскройте, пожалуйста, по подробней.

   
 
 автор: cheops   (24.10.2006 в 20:15)   письмо автору
 
   для: krok-m   (24.10.2006 в 20:05)
 

Этот вопрос как раз и разбирается в по ссылкам
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=5655
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3453
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4843
Возможно вас также заинтересует тема по ссылке
http://www.softtime.ru/info/csv.php
Если разбор всё же вызывает затруднение - прикрепите к сообщению CSV-файл, который, требует подвергнуть разбору, чтобы можно было привести конкретный код?

   
 
 автор: krok-m   (24.10.2006 в 20:22)   письмо автору
 
   для: cheops   (24.10.2006 в 20:15)
 

ни че непонял. выручайте образец нужен

   
 
 автор: Trianon   (24.10.2006 в 20:59)   письмо автору
 
   для: krok-m   (24.10.2006 в 20:22)
 


<?php
      $f 
fopen('list.csv''rb'); $maxlen 0;
      while(!
feof($f))
      {
         
$len strlen(fgets($f));
         if(
$len $maxlen$maxlen $len;
      }
      
fseek($f0SEEK_SET);
      
$line "INSERT INTO TAB VALUES \r\n";
      
$sep ' ';
      while(
$arr fgetcsv($f$maxlen';','"'))
      {
          
$line .= "$sep(NULL"$sep ',';
          foreach(
$arr as $val)
              
$line .= ",'"mysql_escape_string($val)."'";
          
$line .= ")\r\n";
      }
      
mysql_query($line);
?>

В предположении, что в таблице самый первый столбец - autoincrement primary key, а остальные соответствуют CSV-листу.
Ну и что сам лист не длиннее буфера запроса MySQL

   
 
 автор: krok-m   (24.10.2006 в 21:47)   письмо автору
 
   для: Trianon   (24.10.2006 в 20:59)
 

я что то неразберу, можно для лохов разжевать

   
 
 автор: cheops   (24.10.2006 в 21:59)   письмо автору
 
   для: krok-m   (24.10.2006 в 21:47)
 

Создайте таблицу
CREATE TABLE `TAB` (
  `id` int(11) NOT NULL auto_increment,
  `putdate` date NOT NULL,
  `description` text NOT NULL,
  `phone` tinytext NOT NULL,
  `firm` tinytext NOT NULL,
  `email` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
);

И используйте приведённый выше скрипт для разбора данных из CSV-файла и помещения в таблицу TAB.

   
 
 автор: krok-m   (24.10.2006 в 22:16)   письмо автору
 
   для: cheops   (24.10.2006 в 21:59)
 

У меня был файл который считывал зи базы данных. Мне таблицу вместо него вставлять?

<?php  
$hostname 
"baze.an-triumf.ru:64000"
$username "t**********"
$password "********"
$dbName "********"
$userstable "arenda_kvartira_1_komn"
mysql_connect($hostname,$username,$password) or die ("kkkkkkkkkkkkkkkkkkk"); 
mysql_select_db("$dbName") or die ("kkkkkkkkkkkkk"); 


,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

   
 
 автор: cheops   (24.10.2006 в 22:29)   письмо автору
 
   для: krok-m   (24.10.2006 в 22:16)
 

Нет, вам нужно таблицу развернуть в базе данных $dbName. Просто выполнить приведённый выше SQL-запрос, чтобы он создал таблицу TAB.

   
 
 автор: krok-m   (24.10.2006 в 22:35)   письмо автору
 
   для: cheops   (24.10.2006 в 22:29)
 

таблица создалась, но как сделать считывание информации
1. есть файл на сервере.
2 таблица создана.
А дальше что?

   
 
 автор: cheops   (25.10.2006 в 00:23)   письмо автору
 
   для: krok-m   (24.10.2006 в 22:35)
 

Вместо файла list.csv указывайте путь к CSV-файлу.

   
 
 автор: krok-m   (25.10.2006 в 06:42)   письмо автору
 
   для: cheops   (25.10.2006 в 00:23)
 

Я это понял, в какой файл вставлять данный скрипт.

   
 
 автор: Trianon   (25.10.2006 в 09:47)   письмо автору
 
   для: krok-m   (25.10.2006 в 06:42)
 

не надо его никуда вставлять.
Просто добавьте в его начало Ваши строки, обеспечивающие соединение с БД:

$hostname = "baze.an-triumf.ru:64000";  
$username = "t**********";  
$password = "********";  
$dbName = "********";  
mysql_connect($hostname,$username,$password) or die ("kkkkkkkkkkkkkkkkkkk");  
mysql_select_db("$dbName") or die ("kkkkkkkkkkkkk");  

   
 
 автор: krok-m   (24.10.2006 в 23:30)   письмо автору
 
   для: cheops   (24.10.2006 в 22:29)
 

А если пойти более простым путем?
Загружать файл сразу в базу данных.
Я попробывал, а она выдает ошибку
Ошибка
Invalid parameter for CSV import: Строки разделены

Может подскажите, какая структура должна быть у документа, оталкиваять из преведущих форм

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования