如何在MySQLWorkbench中获得表创建脚本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

我回到MySQLGUI工具的MySQL查询浏览器,因为我找不到在MySQLWorkbench中获取表的创建脚本的快捷方式。

提问于
用户回答回答于

我也找不到这样的选择,至少在社区版。

我想这与逆向工程特性,不幸的是,它只在商业版本中提供。(引用)

直接从MySQL服务器反向工程数据库只适用于MySQLWorkbench的商业版本...

但是,仍然可以使用普通SQL来获取create table指令,该指令将允许你创建一个表。

例如,以下查询:

show create table url_alias;

在Drupal数据库上执行时,当使用权限时click > copy field content关于结果:

'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'

不幸的是(再次),MySQLWorkbench在复制时到处添加一些引号:-(

最后,最简单除了使用mysql查询浏览器之外,解决方案很可能是使用命令行客户端连接到数据库,并执行show create table从那里查询:

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)

得到“正确的部分“输出比较容易,有:没有引号要删除。

而且,为了完整起见,你也可以用mysqldump要得到你的桌子的结构:

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

使用--no-data开关,你只会得到结构--在一些模式设置的中间...

用户回答回答于

要获得单个表的创建脚本,只需右键单击表名,然后单击复制到剪贴板>Create语句。

启用文件>转发工程SQL_创建脚本..选项,并获得整个数据库的创建脚本:

  1. 数据库>逆向工程师(Ctrl+R)
  2. 完成创建EER图的步骤
  3. 查看EER图时,单击File>Forward Engineering SQL_创建脚本..。(Ctrl+Shift+G)

扫码关注云+社区