Powielanie tabeli MySQL, indeksów i danych

Jak skopiować / klonować / powielić dane, strukturę i indeksy tabeli MySQL na nową?

To jest to, co znalazłem do tej pory.

To skopiuje dane i strukturę, ale nie indeksy:

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

To skopiuje strukturę i indeksy, ale nie DANE:

create table {new_table} like {old_table};
 512
Author: xkcd150, 2010-07-19

7 answers

Aby skopiować indeksy i wyzwalacze wykonaj te 2 zapytania:

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

Aby skopiować tylko strukturę i dane Użyj tego:

CREATE TABLE tbl_new AS SELECT * FROM tbl_old;

Pytałem już o to:

Kopiowanie tabeli MySQL wraz z indeksami

 1138
Author: Haim Evgi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:24

Oprócz powyższego rozwiązania, możesz użyć AS, aby zrobić go w jednej linii.

CREATE TABLE tbl_new AS SELECT * FROM tbl_old;
 39
Author: theDistantStar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-22 12:08:04

Przejdź do phpMyAdmin i wybierz oryginalną tabelę, a następnie wybierz zakładkę " Operations " w zakładce " Copy table to (database.table) ' obszar wybierz bazę danych, do której chcesz skopiować i dodaj nazwę dla nowej tabeli.

Kopiuj tabelę-phyMyAdmin zrzut ekranu

 4
Author: spuvi86,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-11 18:52:07

MySQL Way

CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;
 3
Author: Krishneil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-20 20:12:11

Znalazłem tę samą sytuację i podejście, które przyjąłem było następujące: 1. Wykonaj Pokaż Utwórz tabelę : spowoduje to wyświetlenie składni Utwórz tabelę dla tabeli, którą chcesz sklonować 2. Uruchom zapytanie Utwórz tabelę, zmieniając nazwę tabeli, aby sklonować tabelę.

To stworzy dokładną replikę tabeli, którą chcesz sklonować wraz z indeksami. Jedyną rzeczą, której potrzebujesz, jest zmiana nazw indeksów (jeśli jest to wymagane).

 2
Author: Jai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-05 12:24:11

Po wypróbowaniu powyższego rozwiązania. Sama wymyślam.

Moje rozwiązanie trochę ręcznie i potrzebuje DBMS.

Najpierw wyeksportuj dane.

Drugie otwarcie danych eksportu.

Trzeci zastąp starą nazwę tabeli nową nazwą tabeli.

Czwarta zmiana nazwy wyzwalacza w danych (używam mysql i pokazuje błąd, gdy nie zmieniam nazwy wyzwalacza)

Po piąte Importuj edytowane dane sql do bazy danych.

 1
Author: Võ Minh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 18:08:24

Dla MySQL

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

DLA MSSQL Użycie MyDatabase:

Select * into newCustomersTable  from oldCustomersTable;

Ten SQL jest używany do kopiowania tabel, tutaj zawartość oldCustomersTable zostanie skopiowana do newCustomersTable.
Upewnij się, że newCustomersTable nie istnieje w bazie danych.

 -3
Author: Krishneil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 01:19:08