В зависимости от формата данных (вы сказали CSV) и базы данных, вам, вероятно, будет лучше загружать данные непосредственно в базу данных (либо непосредственно в таблицы, управляемые Django, либо во временные таблицы). Например, Oracle и SQL Server предоставляют пользовательские инструменты для загрузки больших объемов данных. В случае MySQL есть много хитростей, которые вы можете сделать. Например, вы можете написать сценарий perl / python для чтения файла CSV и создать сценарий SQL с операторами вставки, а затем передать сценарий SQL непосредственно в MySQL.
Как уже говорили другие, всегда сбрасывайте свои индексы и триггеры перед загрузкой больших объемов данных, а затем добавляйте их обратно после этого - перестроение индексов после каждой вставки является основным ударом по обработке.
Если вы используете транзакции, либо отключите их, либо пакетируйте свои вставки, чтобы избежать слишком больших транзакций (определение слишком большого размера варьируется, но если вы делаете миллион строк данных, разбейте их на 1 тысяча транзакций - это, наверное, правильно).
И что самое важное, создайте резервную копию базы данных в первую очередь! Единственное, что хуже, чем восстановление базы данных из резервной копии из-за ошибки импорта, это отсутствие текущей резервной копии для восстановления.