Chcę skopiować tabelę zawartą z jednej bazy danych i wstawić do innej tabeli bazy danych

96

Chcę skopiować schemat tabeli, a także dane z tej tabeli do innej tabeli bazy danych w innej bazie danych na aktywnym serwerze. Jak mogłem to zrobić?

user1031092
źródło
użyj dwóch połączeń z bazą danych i przeczytaj strukturę tabeli z jednego i uruchom to zapytanie w drugim
Dau,
Czy te bazy danych znajdują się w oddzielnych instancjach mysql, czy na tej samej? Replikację można skonfigurować w różnych instancjach, jeśli jest to proces ciągły.
Nick,
@Nick Moje bazy danych znajdują się w różnych instancjach mysql. Czy mógłbyś wyjaśnić, jak to skopiować?
johk95,

Odpowiedzi:

218

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

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

źródło
2
Świetne rozwiązanie, jeśli tabela nie ma ograniczeń związanych z kluczem obcym. Użyłem tego do zrobienia kopii całej bazy danych zamiast tylko jednej tabeli. W tym celu polecam użycie polecenia mysqldump.
thorne51
MySQL może teraz przechowywać dane tabeli w pojedynczych plikach (a pliki frm są również dla każdej tabeli). Takie podejście bez wątpienia zadziałałoby, ale w przypadku ogromnych baz danych jest powolne. Czy jest może inny sposób?
Alex Kovshovik
1
Działa to tylko wtedy, gdy bazy danych znajdują się na tym samym serwerze.
zgr024
10

lub po prostu UTWÓRZ TABELĘ db2.table SELECT * FROM db1.table w MySQL 5

HukeLau_DABA
źródło
4
To nie kopiuje rzeczy, takich jak index. Po prostu tworzy tabelę na podstawie zestawu krotek. Prawdopodobnie nie chcesz tego robić.
BenMQ
Tak, to zapytanie nie kopiuje indexe
XxXk5XxX,
4

W BASH możesz:

mysqldump database_1 table | mysql database_2
billynoah
źródło
2

UTWÓRZ TABELĘ db2.table_new JAKO WYBIERZ * FROM db1.table_old

Rashi Goyal
źródło
2

Jeśli chcesz tylko skopiować Strukturę, po prostu użyj

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps>, który nie skopiuje schematu i danych

Hemant Shori
źródło
1

po prostu użyj -

CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;

Wisznu Więcej
źródło
0

W linii poleceń:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

Spowoduje to skopiowanie tabeli wewnątrz SCHEMA na hoście lokalnym do SCHEMA2 na innym hoście.

localhost i otherhost to po prostu nazwa hosta i mogą być takie same lub różne.

DrGeneral
źródło