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

Форум MySQL

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

 

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

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

тема: CSV to MYSQL
 
 автор: off   (28.01.2006 в 00:49)   письмо автору
 
 

Есть у меня файл CSV весом в 15 мб. В нем 261764 записи. Пытаюсь его перебросить в БД Mysql вот так:

CSV->DBF->прога dbf2mysql. В итоге получается база весом в 638 мб. Не могу понять как это так?

Думаю если пробывать скриптом - получится тот же самый вес...

Как можно прегнать, чтобы CSV файл 15 мб в mysql базу ну хотя-бы 15-20 мб?

Или как можно по-другому поступить, хранить всю базу в CSV не удобно, тк выборка из такого файла занимает оч много времени...?

ХЕЛП ПЛИЗ!!

   
 
 автор: Саня   (28.01.2006 в 01:07)   письмо автору
 
   для: off   (28.01.2006 в 00:49)
 

<?php
// Разделитель
$seperator ";";
// Читаем содержимое в переменную
$file file_get_contents("file.csv");
// Разбиваем по строкам
$strings explode("\n"$file);
// Формируем цикл
for ($i 0$i count($strings); $i++) {
  
$sub_strings explode($separator$strings[$i]);
  for (
$k 0$k count($sub_strings); $k++) {
    
$query "INSERT INTO 'table' VALUES 
              ("
.$sub_string[0].", ".$sub_string[1].", "
               
.$sub_string[2// И так далее, в зависимости от к-ва
                               // элементов в строке CSV-файла
  
mysql_query($query);
  }
}
?>


В CSV-файле есть пустые записи?

   
 
 автор: off   (28.01.2006 в 01:20)   письмо автору
 
   для: Саня   (28.01.2006 в 01:07)
 

Попробывал этим скриптом. Слишком долго. Сервер блокирует через 30 сек.

А что таким способом база mysql будет весить те же 15 mb что и CSV?

   
 
 автор: Саня   (28.01.2006 в 01:26)   письмо автору
 
   для: off   (28.01.2006 в 01:20)
 

> Слишком долго. Сервер блокирует через 30 сек.
Нужно в начале скрипта написать set_time_limit(400);. Устанавливает максимальное время работы скрипта (в данном случае 400 секунд). Если и 400 секунд не хватит, попробуйте увеличивать значение.

> А что таким способом база mysql будет весить те же 15 mb что и CSV?
Да. Каким бы способом данные не вносились.

   
 
 автор: off   (28.01.2006 в 01:41)   письмо автору
 
   для: Саня   (28.01.2006 в 01:26)
 

Пишет

Warning: explode() [function.explode]: Empty delimiter. in z:\home\localhost\www\phone\index.php on line 79


Строка 79:

  $sub_strings = explode($separator, $strings[$i]); 

   
 
 автор: Саня   (28.01.2006 в 01:48)   письмо автору
 
   для: off   (28.01.2006 в 01:41)
 

Ошибка в коде:
// Разделитель 
$seperator = ";";

explode($separator, $strings[$i]);

   
 
 автор: WebTech   (28.01.2006 в 09:29)   письмо автору
 
   для: Саня   (28.01.2006 в 01:48)
 

Можно так
Создайте базу данных с таблицами
Затем выполните запрос

LOAD DATA INFILE 'file.csv' INTO TABLE table FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ENCLOSED BY '\'';

где file.csv это ваш файл csv, путь лучше задать абсолютный,
table - таблица в которую будет импортироваться файл

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=12118&page=1

   
 
 автор: cheops   (28.01.2006 в 12:19)   письмо автору
 
   для: off   (28.01.2006 в 00:49)
 

Проверьте сколько занимают данные, а сколько индексы (проверить можно, например, в phpMyAdmin) или в каталоге данных по размерам файлов.

   
Rambler's Top100
вверх

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