Я хочу скопировать таблицу из одной базы данных и вставить в другую таблицу базы данных


96

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


использовать два соединения с базой данных и читать структуру таблицы из одного и выполнять этот запрос в другом
Дау

Эти базы данных находятся в разных экземплярах 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 тоже находятся в таблице). Этот подход, несомненно, сработает, но с огромными базами данных он медленный. Может быть, есть другой способ?
Alex Kovshovik 08

1
Это работает, только если базы данных находятся на одном сервере.
zgr024

10

или просто CREATE TABLE db2.table SELECT * FROM db1.table в MySQL 5


4
Это не копирует такие вещи, как index. Он просто создает таблицу на основе набора кортежей. Вы, вероятно, не захотите этого делать.
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 на локальном хосте в SCHEMA2 на другом хосте.

localhost и otherhost - это просто имя хоста и могут быть одинаковыми или разными.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.