No MySQL, como alguém pode copiar uma estrutura de tabela sem usar um backup?
jcho360> show create table actor\G
*************************** 1. row ***************************
Table: actor
Create Table: CREATE TABLE `actor` (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
jcho360> create table actor_copy select * from actor;
Query OK, 200 rows affected (0.07 sec)
Records: 200 Duplicates: 0 Warnings: 0
jcho360> show create table actor_copy\G
*************************** 1. row ***************************
Table: actor_copy
Create Table: CREATE TABLE `actor_copy` (
`actor_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`first_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_update` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
quando faço algo assim perco a estrutura, tipo PK, FK, index , ETC.
Você deve ser capaz de fazer:
para obter a estrutura, completa com índices. No entanto, as chaves estrangeiras ainda precisarão ser criadas manualmente.
O que foi dito acima lhe dará apenas estrutura. Então você pode prosseguir para copiar os dados, se desejar:
@DTest definitivamente respondeu a esta corretamente.
Se você quiser gravar a estrutura da tabela com as chaves estrangeiras na definição, aqui estão duas maneiras de fazer isso: (Para este exemplo eu crio a tabela de atores no banco de dados
test
)TÉCNICA #1: usando mysqldump
E aqui está o resultado:
TÉCNICA #2: usando o cliente mysql
E aqui está o resultado: