копировать таблицу из одной базы данных в другую, поддерживая структуру таблицы и переименовывая ее - PullRequest
2 голосов
/ 19 сентября 2011

Я хочу скопировать таблицу (скажем, tbl_1) из одной базы данных (скажем, source_db) в другую базу данных (скажем, target_db), с , учитывая следующие факторы :

  • Структура таблицы должна быть сохранена, включая первичный ключ и ключ автоинкремента

  • При создании копии tbl_1 мне нужно переименовать ее в cpy_tbl_1

Как это возможно используя запрос ?

P.S. Я знаю, что будет много подобных вопросов, как у меня, но у меня есть и эти особые соображения.

Ответы [ 3 ]

4 голосов
/ 19 сентября 2011
CREATE TABLE db_target.cloned_table 
SELECT * 
FROM db_source.source_table;

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

CREATE TABLE db_target.cloned_table (
  a INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (a), KEY(b)
) ENGINE=MyISAM 
SELECT b,c FROM db_source.source_table;

mysql создать таблицу doc

2 голосов
/ 19 сентября 2011

вы можете достичь этого следующим образом;

Сначала создайте target_db

mysql> создать базу данных target_db;

затем используйте его

mysql> use target_db;

затем создайте структуру tb1 с именем cpy_tbl_1

что сделано как

mysql> создать таблицу cpy_tbl_1 наподобие source_db.tb1;

затем просто скопируйте данные.

mysql> вставить в cpy_tbl_1 select * from source_db.tb1;

и результаты проверки

1 голос
/ 19 января 2014

если вы можете использовать сценарии оболочки, то mysqldump - это мощный и гибкий вариант ... особенно, если вы можете использовать sed для поиска и замены.

простая версия:

mysqldump $SOURCE $TABLE | mysql $TARGET
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...