2012-01-06 13 views
92

Chcę skopiować schemat tabeli, a także dane w tej tabeli do innej tabeli bazy danych w innej bazie danych na serwerze na żywo. Jak mogłem to zrobić?Chcę skopiować tabelę zawartą z jednej bazy danych i wstawić do innej tabeli bazy danych

+0

użyć dwóch d połączenia z bazą danych i odczytać strukturę tabeli z jednego i uruchomić to zapytanie w inne – Dau

+0

Czy te bazy danych znajdują się w oddzielnych instancjach mysql lub w tym samym? Różne instancje można konfigurować z replikacją, jeśli jest to proces ciągły. – Nick

+0

Mam rozwiązanie thanx :) – user1031092

Odpowiedz

218

Jeśli chcesz skopiować tabelę z jednej bazy danych do innej bazy danych, możesz po prostu wykonać poniższe czynności.

CREATE TABLE db2.table LIKE db1.table; 
INSERT INTO db2.table SELECT * FROM db1.table; 
+4

jedna z najmądrzejszych sztuczek, jakie kiedykolwiek znalazłam. – MatteoSp

+2

Świetne rozwiązanie, jeśli tabela nie zawiera ograniczeń dotyczących klucza obcego. Użyłem tego do zrobienia kopii całej bazy danych zamiast tylko jednej tabeli. W tym celu polecam użycie polecenia mysqldump. – thorne51

+0

MySQL może teraz przechowywać dane tabeli w poszczególnych plikach (a pliki frm są zbyt w tabeli). Takie podejście bez wątpienia zadziałałoby, ale przy dużych bazach danych jest wolne. Czy jest inny sposób? –

9

lub po prostu twórz tabelę db2.table SELECT * FROM db1.table w MySQL 5

+4

To nie kopiuje rzeczy takich jak indeks. Tworzy jedynie tabelę opartą na zestawie krotek. Prawdopodobnie nie chcesz tego robić. – BenMQ

+0

Tak, to zapytanie nie kopiuje indexe – XxXk5XxX

1

prostu użyć -

CREATE TABLE DB2.newtablename select * from DB1.existingtablename;

2

CREATE TABLE db2.table_new AS SELECT * FROM db1.table_old

2

Jeśli chcesz tylko Struktura być kopiowane prostu użyć

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> że nie skopiuje schematu i danych

1

W BASH możesz:

mysqldump database_1 table | mysql database_2 
Powiązane problemy