2013-08-31 2 views
-1

В настоящее время у меня есть 5 CSV-файлов с примерно 45 000 записей на каждый файл. Какой лучший способ сделать это? Ive делал I/O раньше, но никогда в этом масштабе. Разбираться в векторную строку?Эффективный метод чтения больших файлов CSV?

+0

Каковы ваши недостатки? У вас достаточно памяти? Сколько, если вы не знаете, достаточно ли этого? –

+0

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

+1

Что вы пробовали? Это слишком медленно? 45 000 записей не похожи на большой набор данных, требующих особого внимания. –

ответ

1

Да, читать их в vector было бы разумно.

Выбор хранилища немного зависит от того, что вы планируете делать, и каковы данные. Если вы знаете, какой формат данных, вы можете создать struct и прочитать данные в более организованную форму. Например. если файл выглядит так:

name, score, err 

Mats, 89, 2.1% 
Steve, 79, 8% 

тогда вы могли бы иметь структуру, как это:

struct Row 
{ 
    string name; 
    int score; 
    float err; 
} 

Как говорят комментарии, 45k линии не очень много, и это не должно вызывать каких-либо серьезных проблем если вы не запускаете его на что-то с вычислительной мощностью наручных часов.

+0

Файлы CSV имеют около 10 столбцов. Должен ли я читать строки за строкой для каждого элемента или разбивать столбцы на разные векторы? – Rob

+0

Возможно хороший план. Я бы предположил, что вы можете сделать это довольно легко. –

+0

Какие из них хороший план, каждая строка имеет собственный вектор или каждый столбец свой собственный вектор? – Rob

1

Просто продолжайте делать то, что вы делаете: прочитать все строки в Vector из string S, A Vector о наличии Vector в string с, или Vector объектов. Мы говорим от 200 до 500 МБ ОЗУ, и в настоящее время большинство компьютеров имеют гораздо больше, чем доступно. С точки зрения времени обработки это будет составлять от 5 до 10 минут на среднем компьютере (в зависимости от объема обработки, конечно).

Если у вас возникли проблемы, задайте новый вопрос с дополнительной информацией.

+2

А? 45 тыс. Записей занимают 200-500 МБ? Это 2-11 КБ в строке. Звучит довольно много. И 13ms в строке для обработки? –

+0

Я просто взял таблицу базы данных, которая имеет записи 48K и экспортировала ее как CSV, и одно из полей - это «уведомление» (в основном, текст, который нужно отправить в электронное письмо, отправляемое клиентам сайта), и общее из 10 полей. Файл - 216 МБ. –

+0

Чтение этого файла, с простой программой, которую я только что взломал, занимает 0.4 секунды. –

Смежные вопросы