Я хочу копировать очень большую таблицу, но я не хочу копировать ее строка строкой. Существует ли способ копировать его?
Например, можно УСЕЧЬ строку/строку удаления w/o, таким образом, я задавался вопросом, существует ли что-то подобное для того, чтобы скопировать все таблицы
ОБНОВЛЕНИЕ: строка вставкой строки является очень болезненной (из-за 120M строки). Так или иначе избегать этого?
MySQL больше не имеет надежной функциональности "таблицы копирования" - многие причины этого связаны с тем, как хранятся данные. Однако нижеприведенная вставка выполняется построчно, но довольно просто:
CREATE TABLE `new_table` LIKE `old_table`;
INSERT INTO `new_table` (SELECT * FROM `old_table`);
Если вы используете MyISAM, вы можете копировать физические файлы на диск. Перезапустите службу, и у вас будет новая таблица с индексами и всем тем же.
oracle:
Создать таблицу t как select * из исходной_таблицы
Скопировать большую таблицу нетривиально; в конечном итоге базу данных, вероятно, придется перестроить.
В InnoDB единственный способ - действительно перестроить его, что означает вставить ... выбрать или что-то в этом роде, однако со 120 миллионами строк, поскольку это произойдет в одной транзакции, вы, вероятно, превысите размер области отката. , что приведет к сбою вставки.
mysqldump с последующим переименованием исходной таблицы и восстановлением дампа должно работать, так как mysqldump может вызывать фиксацию через каждые несколько строк. Однако это будет медленно.