Улучшите передачу CSV в MySQL с помощью виртуальных файлов в Python - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь найти способ повысить скорость при отправке данных в базу данных MySQL с помощью панд в python.

После моих тестов производительности я пришел к тому же выводу, что и другие: лучший способ отправить данные в базу данных MySQL - это использовать собственный запрос LOAD DATA INFILE ... вместо метода to_sql pandas (даже с улучшениями, такими как этот или этот ).

Моя проблема в том, что когда я хочу отправить свои данные, они находятся в памяти. Поэтому, чтобы использовать собственный запрос MySQL, мне нужно сначала скопировать его в файл на диске, а затем использовать запрос «LOAD DATA ...».

Итак, вот мой вопрос, есть ли способ «имитировать» файл, записанный на диске, чтобы я мог избежать сброса на него своих больших файлов (200 МБ +)?

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

1 Ответ

0 голосов
/ 18 января 2019

Этот подход может быть жизнеспособной альтернативой без касания диска (для файла загрузки):

Напишите код для создания многострочных INSERT операторов и их выполнения. Предложите 1000 строк за раз, с автокоммитом = ВКЛ.

...