Я хочу скопіювати таблицю, що міститься з однієї бази даних, і вставити в іншу таблицю баз даних


96

Я хочу скопіювати схему таблиці, а також дані в цій таблиці в іншу таблицю бази даних в іншій базі даних на реальному сервері. Як я міг це зробити?


використовувати два підключення до бази даних і читати структуру таблиці з одного і запускати цей запит в інший
Dau

Це бази даних на окремих екземплярах mysql чи однакові? Різні екземпляри можуть бути налаштовані з тиражуванням, якщо це безперервний процес.
Нік

@Nick мої бази даних є в різних екземплярах mysql. Не могли б ви пояснити, як його скопіювати?
johk95

Відповіді:


218

Якщо ви хочете скопіювати таблицю з однієї бази даних в іншу базу даних, ви можете просто зробити так, як нижче.

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

2
Прекрасне рішення, якщо у таблиці немає обмежень щодо зовнішніх ключів. Я використовував це для створення копії цілої бази даних, а не лише однієї таблиці. Для цього я рекомендую використовувати команду mysqldump.
thorne51

MySQL тепер може зберігати дані таблиці в окремих файлах (а файли frm теж надходять для таблиці). Цей підхід, без сумніву, спрацює, але з величезними базами даних він повільний. Чи може бути інший шлях?
Олексій Ковшовік

1
Це працює лише в тому випадку, якщо бази даних є на одному сервері.
zgr024

10

або просто СТВОРИТИ ТАБЛИЦЮ db2.table SELECT * З db1.table у MySQL 5


4
Це не копіює такі речі, як індекс. Він просто створює таблицю на основі набору кортежів. Ви, мабуть, не хочете цього робити.
BenMQ

Так, цей запит не копіює indexe
XxXk5XxX



2

Якщо ви просто хочете, щоб структура була скопійована, просто використовуйте

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps>, що не буде копіювати схему та дані



0

У командному рядку:

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

Це призведе до копіювання таблиці всередині SCHEMA на localhost до SCHEMA2 на otherhost.

localhost та otherhost - це лише ім'я хоста та можуть бути однаковими чи різними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.