2016-10-12 2 views
0

У меня есть файл CSV более 16G, каждая строка - это текстовые данные. Когда я кодировал (например, один-горячий-кодировать) весь файл CSV-файла, мой процесс был убит из-за ограничения памяти. Есть ли способ обработать такие «большие данные»?Как управлять огромным CSV-файлом в python

Я думаю, что разбить весь CSV-файл на несколько «меньших» файлов, а затем добавить их в другой CSV-файл, это правильный способ обработки огромного CSV-файла?

+0

Неполное. Вероятно, это зависит от того, как вы читаете файл. –

+0

@HenkHolterman использует python, особенно в библиотеке Pandas – Kun

ответ

0

В вашем вопросе не указывается, какой язык вы используете для обработки этого файла CSV. Я отвечу, используя C#, но я полагаю, что стратегия будет одинаково хорошо работать и для Java.

Вы можете попробовать использовать класс StreamReader для чтения файла по строке. Это должно заботиться о прочитанной стороне вещей.

Что-то вроде:

using (var reader = new StreamReader(...)) 
{ 
    var line = string.Empty; 

    while ((line != reader.ReadLine()) != null) 
    { 
     Process(line); 
    } 
} 

NB: Это фрагмент кода в C#, и более псевдокод, чем фактический код.

Вы должны создать базу данных с использованием какой-либо локальной технологии БД, SQLite или SQL Server LocalDB или даже MySQL и загрузить данные в таблицу или таблицы.

Затем вы можете написать любую другую дальнейшую обработку на основе данных, хранящихся в базе данных, а не в простом текстовом файле.

+0

Спасибо, я отредактировал заголовок, чтобы указать, какой язык я использую. – Kun

0

Это обсуждалось в Reading huge csv files efficiently?

Вероятно, наиболее разумным, что нужно сделать с файлом 16GB CSV не будет загружать все это в памяти, но читать и обрабатывать его построчно:

with open(filename, "r") as f: 
    lines = csv.reader(f) 
    for line in lines: 
     #Process the line 
+0

Итак, я могу читать и обрабатывать строки за строкой, а не загружать все в память, правильно? Итак, запись в файл будет строкой, правильно? – Kun

+0

Да, так вы должны это сделать, если хотите получить измененную копию файла. Открыть другой файл и написать обработанные строки этому. –

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