Como posso gerar um script de criação de tabela para uma tabela existente no phpmyadmin?
Como posso gerar um script de criação de tabela para uma tabela existente no phpmyadmin?
Respostas:
Use a seguinte consulta na guia sql:
SHOW CREATE TABLE tablename
Para visualizar a consulta completa: Existe um hiperlink com o nome + Opções deixadas acima, selecione Textos completos
Etapa 1, crie uma tabela, insira algumas linhas:
create table penguins (id int primary key, myval varchar(50))
insert into penguins values(2, 'werrhhrrhrh')
insert into penguins values(25, 'weeehehehehe')
select * from penguins
Etapa 2, use o comando mysql dump:
mysqldump --no-data --skip-comments --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
Etapa 3, observe a saída em penguins.sql:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `penguins`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
A saída é confusa por vários tokens de condição de execução acima e abaixo. Você pode filtrá-los se não desejar na próxima etapa.
Etapa 4 (Opcional), filtre os tokens extras de condição de execução desta maneira:
mysqldump --no-data --skip-comments --compact --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
O que produz saída final:
eric@dev /home/el $ cat penguins.sql
DROP TABLE IF EXISTS `penguins`;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Executar consulta é guia sql
MOSTRAR CRIAR TABELA tableName
Clique em
+ Opções -> Escolha textos completos -> Clique em Ir
Copie a consulta Criar tabela e cole onde deseja criar nova tabela.
select * from information_schema.columns
where table_name = 'your_table' and table_schema = 'your_database'
Esta pode ser uma resposta tardia. Mas isso pode ajudar os outros. É muito simples no MY SQL Workbench (estou usando o Workbench versão 6.3 e My SQL versão 5.1 Community edition): Clique com o botão direito do mouse na tabela para a qual você deseja criar o script, selecione a opção 'Copiar para a área de transferência -> Criar instrução'. Basta colar em qualquer editor de texto que você deseja obter o script de criação.
Usando a função PHP.
Obviamente, a função de consulta ($ this-> model) deve ser alterada por conta própria.
/**
* Creating a copy table based on the current one
*
* @param type $table_to_copy
* @param type $new_table_name
* @return type
* @throws Exception
*/
public function create($table_to_copy, $new_table_name)
{
$sql = "SHOW CREATE TABLE ".$table_to_copy;
$res = $this->model->queryRow($sql, PDO::FETCH_ASSOC);
if(!filled($res['Create Table']))
throw new Exception('Could not get the create code for '.$table_to_copy);
$newCreateSql = preg_replace(array(
'@CREATE TABLE `'.$table_to_copy.'`@',
'@KEY `'.$table_to_copy.'(.*?)`@',
'@CONSTRAINT `'.$table_to_copy.'(.*?)`@',
'@AUTO_INCREMENT=(.*?) @',
), array(
'CREATE TABLE `'.$new_table_name.'`',
'KEY `'.$new_table_name.'$1`',
'CONSTRAINT `'.$new_table_name.'$1`',
'AUTO_INCREMENT=1 ',
), $res['Create Table']);
return $this->model->exec($newCreateSql);
}
Eu encontrei outra maneira de exportar tabela no arquivo sql.
Suponha que minha mesa seja abs_item_variations
abs_item_variations ->structure -> propose table structure -> export -> Go
Exporte o formato inteiro de seleção de banco de dados como SQL. Agora, abra o arquivo SQL que você baixou usando o notepad, notepad ++ ou qualquer editor. Você verá todas as tabelas e inserirá consultas do seu banco de dados. Todos os scripts estarão disponíveis lá.