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

246

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

Marko Cakic
la source

Réponses:

513

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

SHOW CREATE TABLE tablename

Pour afficher la requête complète Il y a cet hyperlien nommé + Options à gauche ci-dessus, Il sélectionnez Textes complets

Karan Punamiya
la source
1
Existe-t-il un moyen de spécifier quelle base de données, par exemple si vous avez plusieurs bases de données contenant le même nom de table? Ou n'est-ce pas possible?
Davos
6
@Davos l'utilise, affichez create create table database_name.tablename.
Fahad Anjum
Merci, c'est ce que je voulais
astrosixer
Y a-t-il des arguments que je peux ajouter pour l'exporter dans un fichier?
Dan.
40

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

Devart
la source
4
+1. Remarque: si vous exécutez une requête à partir de la ligne de commande, ;la fin est requise.
Retenu
15

Mysqladmin peut faire le travail de sauvegarde du script de création de table.

Étape 1, créez un tableau, insérez 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 de vidage mysql:

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 conditions d'exécution au-dessus et au-dessous. Vous pouvez les filtrer si vous ne les souhaitez pas à l'étape suivante.

Étape 4 (facultatif), filtrez ces jetons de condition d'exécution supplémentaires de cette façon:

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

Ce qui produit une sortie finale:

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
la source
9

Exécuter la requête est l'onglet SQL

SHOW CREATE TABLE tableName

Cliquer sur

+ Options -> Choisir des textes complets -> Cliquez sur Aller

Copiez la requête Créer une table et collez où vous souhaitez créer une nouvelle table.

Samir Mangroliya
la source
Merci pour le conseil sur l'affichage du texte intégral, je ne savais pas pourquoi il était coupé jusqu'à ce que je voie votre réponse.
Dymas
@Dymas, vous devez choisir des textes complets pour afficher la requête complète. j'ai fait la même chose pour voir la requête complète.
Samir Mangroliya
7

Recherchez directement information_schema.columns:

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

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 My SQL Version 5.1 Community edition): cliquez avec le bouton droit sur la table pour laquelle vous souhaitez créer le script, sélectionnez l'option `` Copier dans le presse-papiers -> Créer une déclaration ''. Collez simplement dans n'importe quel éditeur de texte pour obtenir le script de création.

Narasimman V
la source
0

Utilisation de la fonction PHP.

Bien sûr, la fonction de requête ($ this-> model) vous devez changer pour la vôtre.

/**
 * 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
la source
0

J'ai trouvé une autre façon d'exporter la table dans un fichier sql.

Supposons que ma table soit abs_item_variations

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

Exportez le format de sélection de la base de données entière en SQL. Maintenant, ouvrez ce fichier SQL que vous avez téléchargé à l'aide du bloc-notes, du bloc-notes ++ ou de n'importe quel éditeur. Vous verrez toutes les tables et insérerez des requêtes de votre base de données. Tous les scripts y seront disponibles.

Dhaval Mistry
la source
-2

Encore une façon. Sélectionnez la table cible dans le panneau de gauche dans phpMyAdmin, cliquez sur l'onglet Exporter, désélectionnez le bloc de données et cliquez sur le bouton Aller.

BJ_
la source