Bądź bardzo ostrożny używając tego pod obciążeniem i przy dużej współbieżności. Właśnie zostałem nagrany przy użyciu tego na dużą skalę, gdzie utworzyliśmy około 50 różnych tabel opartych na tej samej tabeli źródłowej, w tym samym czasie, gdy wstawiliśmy do tabeli źródłowej z innych procesów. Zasadniczo spowodował masowe załamanie blokady i musiał ponownie uruchomić MySQL.
Mark B
6
Uhm, OP jest zdezorientowany? Jest to rażąco błędna odpowiedź na pytanie, jeśli zwrócimy uwagę na tytuł i akcent w pytaniu „… bez przepisywania danych…” Odpowiedź RCNell jest słusznie najwyżej głosowana. Nie wiem, dlaczego ten został przyjęty. Tylko mówię'.
To lepsza odpowiedź, ponieważ kopiuje również indeksy!
Chaitan
2
Jest znacznie lepszy, ale nadal nie kopiuje kluczy obcych.
Josef Sábl
@RCNeil, Czy CREATE TABLE new_tbl LIKE orig_tbl;kopiuje również uprawnienia? A może trzeba je skopiować ręcznie?
Pacerier
2
Prawdopodobnie dlatego, że ta odpowiedź nadeszła 4 lata później niż ta oznaczona jako poprawna
pythonian29033
1
@ Pierre-OlivierVares Tekst dokumentacji nie odnosi się bezpośrednio do rzeczywistej odpowiedzi. Tekst odpowiedzi jest zwięzły, pokazując, jak zrobić to, co zadane pytanie, podczas gdy link do dokumentacji zapewnia jedynie dodatkowy kontekst. W związku z tym nadymanie odpowiedzi tekstem z dokumentacji nie jest pomocne.
Abion47
27
SHOW CREATETABLE bar;
otrzymasz instrukcję tworzenia dla tej tabeli, edytuj nazwę tabeli lub cokolwiek innego, a następnie wykonaj ją.
Umożliwi to skopiowanie indeksów, a także ręczne dostosowanie tworzenia tabeli.
Jak można przekształcić show create table barinstrukcję w dynamicznie wykonywalną instrukcję?
Pacerier
wynik podany przez show create table barjest już wykonywalny, jeśli skrypt ma uprawnienia do tworzenia tabel, możesz go przeanalizować, a następnie wykonać również instrukcje alter table.
Timo Huovinen,
create table...nie kopiuje indeksów. ta odpowiedź jest lepszą opcją
foo
ibar
są arbitralnymi zmiennymi bez znaczenia , podobnie jak Alice i Bob .Odpowiedzi:
Próbować:
Lub:
źródło
select * into foo from bar where 1=0
create table NewTable like OldTable
jest to opcja dla Ciebie. Link skopiowany z usuniętej odpowiedzi.Próbować
więc klucze i indeksy są również kopiowane.
Dokumentacja
źródło
CREATE TABLE new_tbl LIKE orig_tbl;
kopiuje również uprawnienia? A może trzeba je skopiować ręcznie?otrzymasz instrukcję tworzenia dla tej tabeli, edytuj nazwę tabeli lub cokolwiek innego, a następnie wykonaj ją.
Umożliwi to skopiowanie indeksów, a także ręczne dostosowanie tworzenia tabeli.
Możesz również uruchomić zapytanie w programie.
źródło
show create table bar
instrukcję w dynamicznie wykonywalną instrukcję?show create table bar
jest już wykonywalny, jeśli skrypt ma uprawnienia do tworzenia tabel, możesz go przeanalizować, a następnie wykonać również instrukcje alter table.create table...
nie kopiuje indeksów. ta odpowiedź jest lepszą opcjąChcę tylko sklonować strukturę tabeli:
Chce również skopiować dane:
źródło