Таблица Duplicating в MySQL, не копируя одну строку за один раз

Я хочу копировать очень большую таблицу, но я не хочу копировать ее строка строкой. Существует ли способ копировать его?

Например, можно УСЕЧЬ строку/строку удаления w/o, таким образом, я задавался вопросом, существует ли что-то подобное для того, чтобы скопировать все таблицы

ОБНОВЛЕНИЕ: строка вставкой строки является очень болезненной (из-за 120M строки). Так или иначе избегать этого?

5
задан Brian Tompsett - 汤莱恩 29 May 2017 в 21:19
поделиться

6 ответов

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

CREATE TABLE `new_table` LIKE `old_table`;
INSERT INTO `new_table` (SELECT * FROM `old_table`);
5
ответ дан 18 December 2019 в 14:42
поделиться

Если вы используете MyISAM, вы можете копировать физические файлы на диск. Перезапустите службу, и у вас будет новая таблица с индексами и всем тем же.

2
ответ дан 18 December 2019 в 14:42
поделиться
INSERT INTO TABLE2 SELECT * FROM TABLE1
1
ответ дан 18 December 2019 в 14:42
поделиться

oracle:

Создать таблицу t как select * из исходной_таблицы

0
ответ дан 18 December 2019 в 14:42
поделиться

Скопировать большую таблицу нетривиально; в конечном итоге базу данных, вероятно, придется перестроить.

В InnoDB единственный способ - действительно перестроить его, что означает вставить ... выбрать или что-то в этом роде, однако со 120 миллионами строк, поскольку это произойдет в одной транзакции, вы, вероятно, превысите размер области отката. , что приведет к сбою вставки.

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

1
ответ дан 18 December 2019 в 14:42
поделиться

Вы можете использовать INSERT INTO ... SELECT .

4
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: