Как лучше всего обрабатывать csv файлы большого размера?
На данном этапе работает следующий код:
class Distr(models.Model): name = models.CharField(max_length=20, verbose_name="Название") mail = models.EmailField() file = models.FileField(upload_to="csv", blank=True, verbose_name="Файл CSV") def save(self): super(Distr, self).save() csv_file = self.file.path dataReader = csv.reader(open(csv_file), delimiter=',', lineterminator='\n') for row in dataReader: tovar = Item() if row[0] != 'Бла-бла-бла': filter = Item.objects.filter(distr = self, artikul = row[0]) if filter: exist = filter.get() exist.price = row[2] exist.count = row[3] exist.save() else: tovar.artikul = row[0] tovar.name = row[1] tovar.distr = self tovar.price = row[2] tovar.count = row[3] tovar.save()
Подскажите, как лучше будет поступить?
Была идея разбивать csv, скажем, по 1 метру и выполнять импорт по кускам, но я пока не смог нагуглить как это делается… Логика мне то понятна: взять файл, считать первые 1мб данных + n данных до переноса строки, обработать, запомнить сколько точно байт обработал, потом проделал бы тоже самое со следующего байта