Дублирование таблицы MySQL, индексов и данных

Как скопировать / клонировать / дублировать данные, структуру и индексы таблицы MySQL в новую?

это то, что я нашел до сих пор.

это скопирует данные и структуру, но не индексы:

create table {new_table} select * from {old_table};

это скопирует структуру и индексы, но не данные:

create table {new_table} like {old_table};

7 ответов


для копирования с индексами и триггерами выполните следующие 2 запроса:

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable;

чтобы скопировать только структуру и данные, используйте этот:

CREATE TABLE tbl_new AS SELECT * FROM tbl_old;

Я уже спрашивал об этом раньше:

скопируйте таблицу MySQL, включая индексы


помимо решения выше, вы можете использовать AS чтобы сделать это в одной строке.

CREATE TABLE tbl_new AS SELECT * FROM tbl_old;

на phpMyAdmin и и выберите исходную таблицу, затем выберите"операции" вскопировать таблицу в (База данных.таблица)' выберите базу данных, в которую вы хотите скопировать и добавить имя новой таблицы.

copy table - phyMyAdmin Screenshot


Путь MySQL

CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;

Я нашел ту же ситуацию, и подход, который я принял, был следующим: 1. Execute SHOW CREATE TABLE : это даст вам синтаксис Create Table для таблицы, которую вы хотите клонировать 2. Запустите запрос CREATE TABLE, изменив имя таблицы для клонирования таблицы.

Это создаст точную реплику таблицы, которую вы хотите клонировать вместе с индексами. Единственное, что вам нужно, это переименовать индексы (если это необходимо).


после того, как попробовал выше решение. Я придумываю свой собственный путь.

мое решение немного вручную и нужна СУБД.

сначала экспортируйте данные.

во-вторых, откройте данные экспорта.

третье заменить старое имя таблицы новым именем таблицы.

четвертое изменение всего имени триггера в данных (я использую mysql, и он показывает ошибку, когда я не изменяю имя триггера)

пятый импорт отредактированных данных sql в базу данных.


для MySQL

CREATE TABLE newtable LIKE oldtable ; 
INSERT newtable SELECT * FROM oldtable ;

ДЛЯ MSSQL Использовать MyDatabase:

Select * into newCustomersTable  from oldCustomersTable;

этот SQL используется для копирования таблиц, здесь содержимое oldCustomersTable будет скопировано в newCustomersTable.
Убедитесь, что newCustomersTable не существуют в базе данных.