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


Answers:


131

至少在Community Edition中,我也找不到这种选择。

我想这与逆向工程功能相对应,不幸的是,该功能仅在商业版本中可用(引用)

直接从MySQL服务器数据库进行反向工程仅适用于商业版本的MySQL Workbench


尽管如此,您仍可以使用Plain-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'

不幸的是(再次),MySQL Workbench以这种方式复制时在各处都添加了一些引号:-(


编辑:使用MySQL 8.0,有一个选项可以正确click > copy field (unquoted)显示结果,以得到不带引号的所需结果。


最后,除了停留在MySQL Query Browser之外,最简单的解决方案很可能是使用命令行客户端连接到数据库,然后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开关,您将只获得结构-在某些模式设置和所有这些中间


2
我似乎能够使用GA版本v5.2.25进行逆向工程。CTRL + R
Cez

1
我的5.2.17版本的MySQL Workbench在执行“显示创建表xxxx”查询后可以执行未引用的复制粘贴。
littlegreen '02

4
这是旧的。右键单击表,然后选择“复制到剪贴板” =>“创建语句”。或者,使用“服务器” =>“数据导出”来导出一个或多个带有或不带有数据的模式。另外,Workbench社区版中提供了“逆向工程”。
菲利普·奥尔森

3
对于未加引号的复制粘贴,请右键单击结果集,然后单击“复制字段”(未加引号)。
Harish Kurup 2014年

现在有一种更简单的方法,右键单击表,然后单击“将SQL复制到剪贴板”。(在Community Edition中可用)
Viliami

49

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

要启用文件>正向工程SQL_CREATE Script ..选项并获取整个数据库的创建脚本,请执行以下操作:

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

3
这对我有用,但是在我使用的版本(6.0社区)上,单击“数据库”->“转发工程师”(而不是“文件”->“转发工程”)。
克里斯,

1
花了一些时间在mysqldump选项上以转储远程数据库的模式,这最终对我有所帮助。
库玛(Kumar)

25

右键单击相关表,然后选择以下任一项:

  • 复制到剪贴板>创建语句
  • 发送到SQL编辑器>创建语句

这似乎对我有用。


6

它位于服务器管理中,而不是SQL开发中。

  • 在主屏幕上,从最右侧的服务器管理部分中选择数据库所在的数据库服务器实例。
  • 从右侧的菜单中选择“数据导出”
  • 选择要导出的数据库,然后选择一个位置。
  • 单击开始导出。

1
对于我来说,这比其他选项要简单得多(尽管我在“数据导出”中的选项在左侧)
2015年


4

我是来这里寻找相同问题的答案的。但是我自己找到了一个更好的答案。

In the tables list, if you right-click on the table name there is a suite of CRUD script generation options in "Send to SQL Editor". You can select multiple tables and take the same approach too.

我的MySQL Workbench版本:5.2.37


3

不知道我是否完全理解您的问题,但是如果只是创建导出脚本,则应将工程师转发到SQL脚本-Ctrl + Shift + G或File-> Export-> first option。


2
对于我来说,此选项始终处于禁用状态
Jader Dias 2010年

是的,我也有这个问题...有人知道如何启用此选项吗?
杰森

2

1个使用命令

show create table test.location

在此处输入图片说明

  1. 右键单击所选行,然后选择“在查看器中打开值”

  2. 选择标签文本 在此处输入图片说明


2

MySQL Workbench 6.3E的解决方案

  • 在左侧面板上,右键单击您的表,然后选择“表检查器”
  • 在中心面板上,单击“ DDL标签”

1

在“模型概述”或“图表”中,右键单击表,您将具有以下选项:“将插入副本复制到剪贴板”或“将SQL复制到剪贴板”


1

不知道这是否仍然是一个问题,但是对于我而言,在5.2.35CE中,可以通过以下方式获取创建脚本:

  1. 数据库->逆向工程师

  2. 在“存储的连接”下,选择数据库

  3. 多次单击“下一步”,选择要进行反向工程的架构,然后使该工具起作用

  4. 您将获得带有所有数据库模式的“ EER图”视图。如果您右键单击您关心的表,然后选择“将SQL复制到剪贴板”,我想您将拥有所需的内容。

希望这可以帮助其他需要它的人。



0
  1. 打开MySQL Workbench(6.3 CE)
  2. 在“导航器”中选择“管理”
  3. 然后选择“数据导出”(在此处选择要导出其创建脚本的表)
  4. 在下拉列表中,选择“转储结构和数据”
  5. 选择复选框“包括创建模式”
  6. 单击“开始导出”按钮。导出完成后,将显示导出文件在系统中的转储位置。转到该位置并打开导出的文件以查找表创建脚本。

或检查https://dev.mysql.com/doc/workbench/en/wb-admin-export-import-management.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.