Csv(15mb) в Mysql

off

Новичок
Csv(15mb) в Mysql

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

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

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

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

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

ХЕЛП ПЛИЗ!!
 

off

Новичок
1.Английский плохо понимаю :)
2. DBF ни зачем. Просто есть прога dbf2mysql. Вот и решил, что можно в dbf а потом сразу же через эту прогу в mysql.
А если сделать напрямую через клиент, то БД будет меньше весить?
 

off

Новичок
Mysql таблица должна выглядеть так:

Поля полностью соответствуют файлу CSV

CREATE TABLE `telephon` (
`row_id` int(11) NOT NULL auto_increment,
`n1` char(254) default NULL,
`n2` double default NULL,
`n3` double default NULL,
`n4` char(254) default NULL,
`n5` char(254) default NULL,
`n6` char(254) default NULL,
`n7` char(254) default NULL,
`n8` double default NULL,
`n9` char(254) default NULL,
`n10` double default NULL,
`n11` char(254) default NULL,
`n12` char(254) default NULL,
`n13` char(254) default NULL,
PRIMARY KEY (`row_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
 

white phoenix

Новичок
off
Так и думал... Дело в том что таблица занимает не столько сколько суммарно байтов в каждой из ячеек, а СуммаРазмеровПолей * Кол-во рядов. Сумма размеров полей у тебя больше 2 кб. Сколько рядов в таблице? Какой размер значений char-полей?
 

white phoenix

Новичок
off
СуммаРазмеровПолей * Кол-во рядов = 2313 * 261764 = 605460132 байт = 577.41 MB. Вот мы и получили размер похожий (еще индексы там) на размер твоей таблицы. Исправь 254 на нужные значения.
 

off

Новичок
так как мне быть?

-~{}~ 28.01.06 02:32:

а понял. сек.

-~{}~ 28.01.06 02:39:

ну если поставить вместо 254 - 70 то будет все равно не 15 mb, а намного больше

-~{}~ 28.01.06 02:39:

ну если поставить вместо 254 - 70 то будет все равно не 15 mb, а намного больше

-~{}~ 28.01.06 02:39:

ну если поставить вместо 254 - 70 то будет все равно не 15 mb, а намного больше
 

white phoenix

Новичок
off
Сделай так чтобы сумма размеров всех полей была как можно меньше. По каким полям идет выборка/сортировка?
 

off

Новичок
Сортировка по row_id, выборка по всем, в зависимости от запроса...

-~{}~ 28.01.06 02:54:

Ух-ты и вправду. Уменьшил до 24 символов. Теперь 70mb. Ща еще попробую уменьшить...
 

off

Новичок
меньше места будет занимать?

-~{}~ 28.01.06 02:58:

Конвертирует базу минут 15-20... :)
 

off

Новичок
Уже в 2 раза меньше. А если сделать varchar вместо char во сколько раз прмерно, уменьшится размер?

-~{}~ 28.01.06 03:23:

Ладно. Спасибо огромное, white phoenix. Чтобы я без тебя делал!!!!!! Теперь можно идти спать :)

-~{}~ 29.01.06 19:52:

А как теперь ее залить в mysql? Размер то большой. Через phpmyadmin не пашет....
 

white phoenix

Новичок
kruglov
> С этого и надо было начинать
Это на закуску оставил :)
off
Как угодно, можно через скрипт, можно через консольную утилиту, можно через dumper.
 

off

Новичок
white phoenix Вот теперь все! ОГРОМНОЕ СПАИБО!!!

А dumper РУЛИТ! Клевая прога!
 

idler

Новичок
Есть разработка на VBA - отправляет данные из EXСEL на веб сервер!
Продаю!
(прошу прощение за флуд)
 
Сверху