Как перенести CSV-файл в Sqlite3 (или MySQL)? – Python

Я использую Python для сохранения данных подряд за строкой … но это очень медленно!

CSV содержит 70 миллионов строк , и с моим сценарием я могу просто сохранить 1 тысячу секунд .


Вот как выглядит мой сценарий

reader = csv.reader(open('test_results.csv', 'r')) for row in reader: TestResult(type=row[0], name=row[1], result=row[2]).save() 

Я считаю, что для тестирования мне, возможно, придется подумать о MySQL или PostgreSQL.

Любая идея или советы? Это первый раз, когда я сталкиваюсь с такими огромными объемами данных. 🙂

2 Solutions collect form web for “Как перенести CSV-файл в Sqlite3 (или MySQL)? – Python”

Для импорта MySQL:

 mysqlimport [options] db_name textfile1 [textfile2 ...] 

Для импорта SQLite3:

ref Как импортировать файл .sql или .csv в SQLite?

Я не знаю, будет ли это иметь большую разницу, но поскольку вы имеете дело с ORM Django, я могу предложить следующее:

  1. Убедитесь, что DEBUG False в вашем файле настроек Django, поскольку в противном случае вы сохраняете каждый отдельный запрос в памяти.
  2. Поместите свою логику в основную функцию и оберните ее в декоратор django.db.transactions.commit_on_success. Это предотвратит необходимость каждой строки в ее собственной транзакции, что существенно ускорит процесс.
  3. Если вы знаете, что все строки в файле не существуют в базе данных, добавьте force_insert = True в ваш вызов метода save (). Это позволит вдвое сократить количество вызовов в sqlite.

Эти предложения, вероятно, сделают еще большую разницу, если вы обнаружите, что используете СУБД клиент-сервер.

  • Сравнение дат с SQLAlchemy, SQLite
  • 2 раковины 1 стакан. Совместное использование очереди между двумя скриптами Python на малине Pi
  • Почему я получаю ошибку 500 при попытке подключиться к базе данных sqlite?
  • Как создать или открыть базу данных со значением, хранящимся в переменной
  • Как я могу регистрировать запросы в Sqlite3 с помощью Python?
  • Как проверить, существует ли таблица?
  • Чтение из базы данных с помощью SQLite и Python: неверное количество привязок
  • Sqlite. Как получить значение Auto Increment Primary Key после Insert, кроме last_insert_rowid ()?
  • sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 74 поставленных
  • Выберите и обновите в той же транзакции с помощью python sqlite
  • Обновление с Django 1.6 до 1.9: сбой python manage.py
  • Python - лучший язык программирования в мире.