Как быстро импортировать 10млн строк в mySQL ?

Автор Тема: Как быстро импортировать 10млн строк в mySQL ?  (Прочитано 1241 раз)

Оффлайн РупортАвтор темы

  • Бизнес оценка: (0)
  • Старожил
  • ****
  • СПАСИБО: 90
  • Сообщений: 366
  • Карма: 19
    • Просмотр профиля

Оффлайн РупортАвтор темы

  • Старожил
  • ****
Установлен последний mySQL на моем компе. (i7/16GB Ram/ssd).
Имеется 10млн. строк инструкций REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
Через коммандную строку mySQL импортируются в таблицу со скоростью 26 строк в секунду, через HeidiSQL такая же скорость.
Получается, чтобы импортировать 10млн строк, понадобится 10000000/26/3600=106 часов или около четырех суток. Это очень долго.
Помню когда импортировал базу размером в 400-500мб на хостинг через phpmyadmin, то там этот процесс занимает не более 30-40 секунд.
Почему такая разница в скорости? Или как правильно  быстро импортировать базу из дампа в 10млн. строк?


Оффлайн Старый

  • Бизнес оценка: (9, 100%)
  • Мастер
  • *****
  • СПАСИБО: 1696
  • Сообщений: 5513
  • Карма: 159
  • Ищу работу постоянную, удалённую с окладом.
  • Награды Более одной тысячи спасибо КМС поисковой оптимизации
    • Просмотр профиля

Оффлайн Старый

  • Мастер
  • *****
  • Доп. информация
    • Бизнес оценка: (9, 100%)
    • СПАСИБО: 1696
    • Сообщений: 5513
    • Карма: 159
    • Ищу работу постоянную, удалённую с окладом.
    • Награды Более одной тысячи спасибо КМС поисковой оптимизации
      • Просмотр профиля
Что значит строк? У вас текстовый вариант базы с разделителями или всё-таки полноценная выгрузка базы?

Так и загружайте её автоматически. Зачем построчно?

Через командную строку делают загрузку, если версии не совпадают, ошибок много. Тогда приходится частями (таблицами), на ходу правя ошибки.

А так чего морочиться? Сделайте загрузку через тот же phpMyAdmin или клиент, которым выгружали. Бывает такое, что при выгрузке одним,а загрузке другим выдаёт ошибки.

Оффлайн РупортАвтор темы

  • Бизнес оценка: (0)
  • Старожил
  • ****
  • СПАСИБО: 90
  • Сообщений: 366
  • Карма: 19
    • Просмотр профиля

Оффлайн РупортАвтор темы

  • Старожил
  • ****
Так и загружайте её автоматически. Зачем построчно?

как?
инструкции INSERT у меня  в отдельном файле, базы еще не существует.
REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
.....
REPLACE INTO t1 VALUES (null,'бла-бла-бла','бла-бла-бла');
файл весит 950мб, php на комп не установлен.

Добавлено: 19-08-2015, 14:20:51

ответ подсказали на др. форуме:

LOAD DATA LOCAL INFILE "C:/-mysql/out.txt" INTO TABLE db1.t1;
операция заняла 1-2 минуты
« Последнее редактирование: 19-08-2015, 14:20:51 от Рупорт »


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
1822 Просмотров
Последний ответ 06-11-2011, 00:50:39
от Titan
6 Ответов
3429 Просмотров
Последний ответ 08-01-2013, 20:56:31
от bibika
3 Ответов
1449 Просмотров
Последний ответ 29-11-2013, 22:11:46
от Безбашенный прораб
1 Ответов
1426 Просмотров
Последний ответ 10-08-2014, 14:53:47
от Владимир75
2 Ответов
1059 Просмотров
Последний ответ 18-06-2015, 20:03:34
от avk