MySQL таблица 30 миллионов записей вставьте в другую - PullRequest
2 голосов
/ 05 ноября 2011

У меня 30 миллионов записей MySQL таблицы.

Имеет около 20 столбцов, из которых я буду использовать 15 для вставки в другую таблицу.

Теперь я не могу использовать PHP для загрузки этого большого набора данных (выделение 30 миллионов строк и загрузка в память невозможна), какой будет лучший способ загрузки всех этих записей? MySQL 5.X

Я использую EMS для подключения к базе данных.

Ответы [ 3 ]

3 голосов
/ 05 ноября 2011

А как насчет INSERT INTO MySmallerTable SELECT Col1, col2, col3... FROM MyBiggerTable

Возможно, стоит разбить его на несколько INSERT

Как:

INSERT INTO ... SELECT ... WHERE ID between 1 and 100000;

INSERT INTO ... SELECT ... WHERE ID between 100001 and 200000;

и т. Д.

0 голосов
/ 05 ноября 2011

Существует несколько способов включить одного пользователя M_M, указанного выше. Я не использовал EMS и не уверен, что он может и не может сделать. Но я широко использовал Workbench.

A.

  • Создать новую таблицу назначения
  • Создание представления на исходной таблице с интересующими столбцами
  • LВвести в пункт назначения из источника с помощью простого INSERT INTO SOURCE_TABLE SELECT * FROM DESTINATION_TABLE

B.

  • Использовать mysqldump
  • Загрузить в новую таблицу
  • Измените таблицу, отбросив ненужные столбцы
0 голосов
/ 05 ноября 2011

вы можете сделать это

INSERT INTO new_table (`col1`,`col2`,`col3`) SELECT `oldcol1`,`oldcol2`,`oldcol3`
 FROM old_table LIMIT 0,100000

и повторить его с помощью php loop (с изменением начального значения предела)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...