Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir un script de création de table dans MySQL Workbench ?

Je ne trouve pas non plus une telle option, du moins dans l'édition communautaire.

Je suppose que cela correspond à la Reverse Engineering fonctionnalité, qui, malheureusement, n'est disponible que dans l'édition commerciale (citant) :


Toutefois, vous pouvez utiliser plain-SQL pour obtenir la create table instruction qui vous permettra de créer un tableau.

Par exemple, la requête suivante :

show create table url_alias;

lorsqu'il est exécuté sur une base de données Drupal, donnerait, lors de l'utilisation du click > copy field content sur le résultat :

'CREATE TABLE `url_alias` (
  `pid` int(10) unsigned NOT NULL auto_increment,
  `src` varchar(128) NOT NULL default '''',
  `dst` varchar(128) NOT NULL default '''',
  `language` varchar(12) NOT NULL default '''',
  PRIMARY KEY  (`pid`),
  UNIQUE KEY `dst_language` (`dst`,`language`),
  KEY `src_language` (`src`,`language`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8'

Malheureusement (encore) , MySQL Workbench ajoute des guillemets partout lors de la copie de cette façon :-(

EDIT :avec MySQL 8.0, il existe une option pour click > copy field (unquoted) sur le résultat pour obtenir le résultat souhaité sans guillemets.


En fin de compte, le plus simple la solution, à l'exception de rester avec MySQL Query Browser, sera très probablement de se connecter à la base de données, en utilisant le client de ligne de commande, et d'exécuter le show create table requête à partir de là :

mysql> show create table url_alias\G
*************************** 1. row ***************************
       Table: url_alias
Create Table: CREATE TABLE `url_alias` (
  `pid` int(10) unsigned NOT NULL auto_increment,
  `src` varchar(128) NOT NULL default '',
  `dst` varchar(128) NOT NULL default '',
  `language` varchar(12) NOT NULL default '',
  PRIMARY KEY  (`pid`),
  UNIQUE KEY `dst_language` (`dst`,`language`),
  KEY `src_language` (`src`,`language`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Obtenir "la bonne portion " de la sortie est plus simple, là :pas de guillemet à supprimer.


Et, juste pour être complet, vous pouvez également utiliser mysqldump pour obtenir la structure de votre table :

mysqldump --no-data --user=USERNAME --password=PASSWORD --host=HOST DATABASE_NAME TABLE_NAME

Utiliser le --no-data switch, vous n'obtiendrez que la structure -- au milieu de certains paramètres de mode et tout ça .