Поиск по сайту:
Ревнивец всегда находит больше, чем ищет (М. Скюдери).

SQL — Клонирование таблиц

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
24.04.2017
SQL - Клонирование таблиц

Может быть ситуация, когда вам нужна точная копия таблицы и команды CREATE TABLE … или SELECT … не подходят для ваших целей, потому что копия должна включать в себя одни и те же индексы, значения по умолчанию и так далее.

Если вы используете MySQL RDBMS, вы можете справиться с этой ситуацией, придерживаясь шагов, приведенных ниже:

  • Используйте команду SHOW CREATE TABLE, чтобы получить заявление CREATE TABLE, которое определяет структуру таблицы-источника, индексы и все.
  • Исправьте оператор, чтобы изменить имя таблицы, для клонирования таблицы и выполнения оператора. Таким образом, вы будете иметь точную таблицу клона.
  • Необязательно, если вам нужно скопировать содержимое таблицы, то также надо выполнить INSERT INTO или SELECT.

Примеры

Попробуйте следующий пример, чтобы создать таблицу клона для TUTORIALS_TBL, чья структура выглядит следующим образом:

Шаг 1 — Получить полную структуру о таблице:

SQL> SHOW CREATE TABLE TUTORIALS_TBL \G; 
*************************** 1. row *************************** 
      Table: TUTORIALS_TBL 
Create Table: CREATE TABLE 'TUTORIALS_TBL' ( 
  'tutorial_id' int(11) NOT NULL auto_increment, 
  'tutorial_title' varchar(100) NOT NULL default '', 
  'tutorial_author' varchar(40) NOT NULL default '', 
  'submission_date' date default NULL, 
  PRIMARY KEY  ('tutorial_id'), 
  UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
) TYPE = MyISAM 
1 row in set (0.00 sec)

 

Шаг 2 — Переименовать эту таблицу и создать еще одну таблицу:

SQL> CREATE TABLE `CLONE_TBL` ( 
  -> 'tutorial_id' int(11) NOT NULL auto_increment, 
  -> 'tutorial_title' varchar(100) NOT NULL default '', 
  -> 'tutorial_author' varchar(40) NOT NULL default '', 
  -> 'submission_date' date default NULL, 
  -> PRIMARY KEY  (`tutorial_id'), 
  -> UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
-> ) TYPE = MyISAM; 
Query OK, 0 rows affected (1.80 sec)

 

Шаг 3 — После того, как шаг 2 выполнен, вы будете клонировать таблицу в базу данных. Если вы хотите скопировать данные из старой таблицы, то вы можете сделать это с помощью заявление INSERT INTO … SELECT.

SQL> INSERT INTO CLONE_TBL (tutorial_id, 
   ->                        tutorial_title, 
   ->                        tutorial_author, 
   ->                        submission_date) 
   -> SELECT tutorial_id,tutorial_title, 
   ->        tutorial_author,submission_date, 
   -> FROM TUTORIALS_TBL; 
Query OK, 3 rows affected (0.07 sec) 
Records: 3  Duplicates: 0  Warnings: 0

 

И, наконец, вы будете иметь точную таблицу клон, как вы хотели.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.