Como gerar um script de criação de tabela para uma tabela existente no phpmyadmin?

246

Como posso gerar um script de criação de tabela para uma tabela existente no phpmyadmin?

Marko Cakic
fonte

Respostas:

513

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

Karan Punamiya
fonte
1
Existe uma maneira de especificar qual banco de dados, por exemplo, se você tiver vários bancos de dados que contenham o mesmo nome de tabela? ou isso não é possível?
Davos
6
@ David usam isso, show create table database_name.tablename.
Fahad Anjum
Obrigado, é isso que eu queria
astrosixer 29/01
Existem argumentos que posso adicionar para exportá-lo para um arquivo?
Dan.
40

Execute a SHOW CREATE TABLE <table name>consulta.

Devart
fonte
4
+1. Nota: se estiver executando a consulta na linha de comandos, ;o final será necessário.
Retido
15

O Mysqladmin pode fazer o trabalho de salvar o script create table.

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;
Eric Leschinski
fonte
9

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.

Samir Mangroliya
fonte
Obrigado pela dica sobre a exibição de texto completo, não sabia por que ele estava sendo cortado até que vi sua resposta.
Dymas 15/03/19
@ Dymas, você precisa escolher textos completos para mostrar a consulta completa. Eu fiz o mesmo para ver a consulta completa.
Samir Mangroliya 16/03/19
7

Consulte o information_schema.columns diretamente:

select * from information_schema.columns 
where table_name = 'your_table' and table_schema = 'your_database'
Eric Leschinski
fonte
2

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.

Narasimman V
fonte
0

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);
}
falcon_01
fonte
0

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
Sumit kumar
fonte
0

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á.

Dhaval Mistry
fonte
-2

Mais uma maneira. Selecione a tabela de destino no painel esquerdo do phpMyAdmin, clique na guia Exportar, desmarque o bloco Data e clique no botão Ir.

BJ_
fonte