środa, 19 września 2018

MySQL – klonowanie tabeli

MySQL – klonowanie tabeli

Może zaistnieć sytuacja, gdy potrzebujesz dokładnej kopii tabeli i CREATE TABLE ... SELECT  nie odpowiada twoim celom, ponieważ kopia musi zawierać te same indeksy, wartości domyślne i tak dalej.
Możesz poradzić sobie z tą sytuacją, wykonując czynności podane poniżej:
·      Użyj SHOW CREATE TABLE, aby uzyskać instrukcję CREATE TABLE, która określa strukturę tabeli źródłowej, indeksy i wszystkie inne dane.
·      Zmodyfikuj instrukcję, aby zmienić nazwę tabeli na tabelę klonowaną i wykonaj instrukcję. W ten sposób będziesz miał dokładnie sklonowaną tabelę.
·      Opcjonalnie, jeśli chcesz skopiować zawartość tabeli, również możesz wydać instrukcję INSERT INTO ... SELECT.
Przykład
Wypróbuj poniższy przykład, aby utworzyć tabelę klonowania dla kurs_tbl.
Krok 1 - Uzyskaj pełną strukturę tabeli.
mysql> SHOW CREATE TABLE kurs_tbl \G;
*************************** 1. row ***************************
      Table: kurs_tbl
Create Table: CREATE TABLE `kurs_tbl` (
   `kurs_id` int(11) NOT NULL auto_increment,
   `kurs_title` varchar(100) NOT NULL default '',
   `kurs_author` varchar(40) NOT NULL default '',
   `submission_date` date default NULL,
   PRIMARY KEY  (`kurs_id`),
   UNIQUE KEY `AUTHOR_INDEX` (`kurs_author`)
) TYPE = MyISAM
1 row in set (0.00 sec)

ERROR:
No query specified

Krok 2 - Zmień nazwę tej tabeli i utwórz kolejną tabelę.
mysql> CREATE TABLE klon_tbl (
   -> kurs_id int(11) NOT NULL auto_increment,
   -> kurs_title varchar(100) NOT NULL default '',
   -> kurs_author varchar(40) NOT NULL default '',
   -> submission_date date default NULL,
   -> PRIMARY KEY  (kurs_id),
   -> UNIQUE KEY AUTHOR_INDEX (kurs_author)
-> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)

Krok 3 - Po wykonaniu kroku 2 utworzysz sklonowaną tabelę w bazie danych. Jeśli chcesz skopiować dane ze starej tabeli, możesz to zrobić za pomocą instrukcji INSERT INTO ... SELECT..
mysql> INSERT INTO klon_tbl (kurs_id,
   ->                        kurs_title,
   ->                        kurs_author,
   ->                        submission_date)
   -> SELECT kurs_id,kurs_title,
   ->        kurs_author,submission_date
   -> FROM kurs_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

Na koniec będziesz miał dokładny sklonowaną tabelę, tak jak chciałeś.




Brak komentarzy:

Prześlij komentarz