Embora bulk_create seja útil para salvar um pequeno número de registros durante o processamento de um formulário HTML, não é ideal para salvar milhares de registros. Como você já descobriu, é lento porque precisa de muita memória e envia uma consulta muito grande para o banco de dados. Fortuatley CARREGAR DADOS NO ARQUIVO vem em socorro.
Podemos produzir um arquivo semelhante ao que é produzido usando o csv writer o exemplo a seguir é da documentação.
import csv
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
Finalmente, como você já descobriu, a opção LOCAL para LOAD DATA .. às vezes pode ser usada por conveniência.
Ao usar esta opção, o arquivo não precisa ser transferido manualmente para o servidor. Você pode gerar o arquivo CSV no lado do cliente e a opção local fará com que o cliente mysql transfira automaticamente o arquivo para o servidor.