|
|
|
| Есть у меня файл CSV весом в 15 мб. В нем 261764 записи. Пытаюсь его перебросить в БД Mysql вот так:
CSV->DBF->прога dbf2mysql. В итоге получается база весом в 638 мб. Не могу понять как это так?
Думаю если пробывать скриптом - получится тот же самый вес...
Как можно прегнать, чтобы CSV файл 15 мб в mysql базу ну хотя-бы 15-20 мб?
Или как можно по-другому поступить, хранить всю базу в CSV не удобно, тк выборка из такого файла занимает оч много времени...?
ХЕЛП ПЛИЗ!! | |
|
|
|
|
|
|
|
для: 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-файле есть пустые записи? | |
|
|
|
|
|
|
|
для: Саня
(28.01.2006 в 01:07)
| | Попробывал этим скриптом. Слишком долго. Сервер блокирует через 30 сек.
А что таким способом база mysql будет весить те же 15 mb что и CSV? | |
|
|
|
|
|
|
|
для: off
(28.01.2006 в 01:20)
| | > Слишком долго. Сервер блокирует через 30 сек.
Нужно в начале скрипта написать set_time_limit(400);. Устанавливает максимальное время работы скрипта (в данном случае 400 секунд). Если и 400 секунд не хватит, попробуйте увеличивать значение.
> А что таким способом база mysql будет весить те же 15 mb что и CSV?
Да. Каким бы способом данные не вносились. | |
|
|
|
|
|
|
|
для: Саня
(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]);
|
| |
|
|
|
|
|
|
|
для: off
(28.01.2006 в 01:41)
| | Ошибка в коде:
// Разделитель
$seperator = ";";
|
explode($separator, $strings[$i]);
|
| |
|
|
|
|
|
|
|
для: Саня
(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 | |
|
|
|
|
|
|
|
для: off
(28.01.2006 в 00:49)
| | Проверьте сколько занимают данные, а сколько индексы (проверить можно, например, в phpMyAdmin) или в каталоге данных по размерам файлов. | |
|
|
|