web-dev-qa-db-fra.com

Comment générer un script de création de table pour une table existante dans phpmyadmin?

Comment générer un script de création de table pour une table existante dans phpmyadmin? 

183
Marko Cakic

Utilisez la requête suivante dans l'onglet SQL:

SHOW CREATE TABLE tablename

Pour afficher la requête complète Il existe un lien hypertexte nommé + Options à la gauche, sélectionnez Textes complets.

386
Karan Punamiya

Exécuter la requête SHOW CREATE TABLE <table name>.

30
Devart

Mysqladmin peut sauvegarder le script create table.

Étape 1, créer un tableau, insérer quelques lignes:

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

Étape 2, utilisez la commande 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

Étape 3, observez la sortie dans 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 */;

La sortie est encombrée par un certain nombre de jetons de condition d'exécution situés au-dessus et au-dessous. Vous pouvez les filtrer si vous ne les voulez pas à l'étape suivante.

Étape 4 (facultatif), filtrez ces jetons de condition d'exécution supplémentaires de la manière suivante:

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

Qui produit le résultat 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;
15
Eric Leschinski

Interrogez directement information_schema.columns:

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

Cela peut être une réponse tardive. Mais cela peut aider les autres. C’est très simple dans MY SQL Workbench (j’utilise Workbench version 6.3 et l’édition My SQL version 5.1 Community): Faites un clic droit sur la table pour laquelle vous voulez créer le script, sélectionnez l’option «Copier dans le presse-papiers -> Créer une instruction». Collez simplement dans l'éditeur de texte de votre choix pour obtenir le script de création.

2
Narasimman V

La requête est un onglet sql

SHOW CREATE TABLE nomTable

Cliquer sur 

+ Options -> Choisir les textes entiers -> Cliquez sur Go

Copiez la requête Créer une table et collez-la à l'endroit où vous souhaitez créer une nouvelle table.

2
Samir Mangroliya

Utiliser la fonction PHP.

Bien sûr, la fonction de requête ($ this-> model) que vous devez changer vous-même.

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

J'ai trouvé un autre moyen d'exporter une table dans un fichier SQL.

Supposons que ma table est abs_item_variations

abs_item_variations ->structure -> propose table structure -> export -> Go
0
Sumit kumar