MySQL импортирует большой CSV

У меня есть большой CSV-файл, который я пытаюсь импортировать в MySQL (около 45 ГБ, около 150 миллионов строк, большинство столбцов маленькие, но один с текстом переменной длины, может достигать размера до КБ). Я использую LOAD DATA LOCAL INFILE, чтобы попытаться импортировать его, но сервер всегда отключает мое соединение до его завершения. Я попытался изменить глобальные переменные тайм-аута подключения, чтобы исправить это, но до истечения времени ожидания уже есть несколько часов. Есть ли другой способ импортировать такую ​​большую базу данных, или я что-то не так делаю с этим подходом?

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table CHARACTER SET latin1
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n';

Я выполняю эту команду в Windows 10 с помощью командной строки MySQL. Моя версия MySQL - 8.0.

Какую программу вы используете для этого запроса? Командная строка mysql?

pegasuspect 01.07.2018 21:28

Да, я использую командную строку MySQL.

Relados 01.07.2018 21:29

а с помощью информации об ОС вы можете обновить свой вопрос, чтобы люди могли воспроизвести вашу проблему.

pegasuspect 01.07.2018 21:31

Очевидное предложение: разделите файл на файлы меньшего размера.

Bill Karwin 01.07.2018 21:48
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
4
659
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Раньше я справлялся с этим путем написания php-скрипта, который считывает файл и выводит 50% верхних строк в новый файл, а затем удаляет эти строки. Затем выполните два файла с данными загрузки, один для исходного и один для нового.

В сочетании с @ Bill-Karwin я этим и закончил, хотя я разбиваю файл на 15 из 10 миллионов или меньше строк.

Relados 02.07.2018 04:29

Другие вопросы по теме