如何在 MySQL Workbench 中获取表创建脚本?
Posted
技术标签:
【中文标题】如何在 MySQL Workbench 中获取表创建脚本?【英文标题】:How to get a table creation script in MySQL Workbench? 【发布时间】:2011-01-26 20:23:06 【问题描述】:我正在回滚到 mysql GUI 工具的 MySQL 查询浏览器,因为我在 MySQL Workbench 中找不到获取表创建脚本的快捷方式。
【问题讨论】:
【参考方案1】:不确定我是否完全理解您的问题,但如果只是创建导出脚本,您应该将工程师转发到 SQL 脚本 - Ctrl + Shift + G 或文件 -> 导出 -> 第一个选项。
【讨论】:
这个选项对我来说总是被禁用 是的,我也有这个问题...有人知道如何启用此选项吗?【参考方案2】:简单使用:
show create table <table_name>
【讨论】:
【参考方案3】:我也找不到这样的选项,至少在社区版中是这样。
我想这对应于 Reverse Engineering 功能,不幸的是,该功能仅在商业版中可用(引用):
对数据库进行逆向工程 直接来自 MySQL 服务器适用 到 MySQL 的商业版本 仅限工作台。
不过,您可以使用纯 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 查询浏览器外,很可能是使用命令行客户端连接到数据库,并从那里执行 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
开关,您只会得到结构——在一些模式设置和所有这些设置的中间。
【讨论】:
我似乎可以使用 GA 版本 v5.2.25 进行逆向工程.. CTRL+R 我的 5.2.17 版本的 MySQL Workbench 可以在执行 'show create table xxxx' 查询后进行不带引号的复制粘贴。 这是旧的。右键单击表格并选择“复制到剪贴板”=>“创建语句”。或者,使用 "Server" => "Data Export" 导出一个或多个包含或不包含数据的模式。此外,Workbench 的社区版中提供了“逆向工程”。 对于不带引号的复制粘贴,右键单击结果集和复制字段(不带引号)。 现在有一种更简单的方法来执行此操作,右键单击您的表并单击“将 SQL 复制到剪贴板”。 (在社区版中可用)【参考方案4】:右键单击相关表格并选择以下之一:
复制到剪贴板 > 创建语句 发送到 SQL 编辑器 > 创建语句这似乎对我有用。
【讨论】:
【参考方案5】:要获取单个表的创建脚本,只需右键单击表名,然后单击复制到剪贴板 > 创建语句。
启用 File > Forward Engineering SQL_CREATE Script.. 选项并获取整个数据库的创建脚本:
-
数据库 > 逆向工程师 (Ctrl+R)
完成创建 EER 图的步骤
查看 EER 图时,单击文件 > 正向工程 SQL_CREATE 脚本... (Ctrl+Shift+G)
【讨论】:
这对我有用,但在我使用的版本(6.0 社区)上,您单击数据库->正向工程师(不是文件->正向工程)。 花时间在 mysqldump 选项上转储远程数据库的模式,这最终帮助了我。【参考方案6】:在“模型概述”或“图表”中,只需右键单击表格,您就有以下选项:“复制插入到剪贴板”或“将 SQL 复制到剪贴板”
【讨论】:
【参考方案7】:不确定这是否仍然是一个问题,但对我来说,在 5.2.35CE 中,可以通过以下方式获取创建脚本:
数据库 --> 逆向工程师
在存储连接下,选择您的数据库
点击“下一步”几次,选择您要逆向工程的架构,然后让工具工作
您将获得一个包含所有 DB 模式的“EER 图”视图。如果您右键单击您关心的表并选择“将 SQL 复制到剪贴板”,我认为您将拥有所需的内容。
希望这可以帮助其他需要它的人。
【讨论】:
【参考方案8】:我来这里是为了寻找同一个问题的答案。但我自己找到了一个更好的答案。
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
【讨论】:
这是最好的答案,我自己发现了这个并准备将其发布为答案。澄清一下,如果您想要创建脚本,请右键单击表,将鼠标悬停在“发送到 SQL 编辑器”,然后单击“创建语句”。它将使用 create 语句打开一个新的脚本窗口。比这里的任何其他答案都方便。【参考方案9】:它位于服务器管理而不是 SQL 开发中。
在主屏幕中,从最右侧的服务器管理部分选择您的数据库所在的数据库服务器实例。 从右侧菜单中选择数据导出。 选择您要导出的数据库并选择一个位置。 点击开始导出。【讨论】:
这对我来说比其他选项更简单(尽管我的数据导出选项在左侧)【参考方案10】:您可以使用MySQL Proxy及其scripting system在终端实时查看SQL查询。
【讨论】:
【参考方案11】:1 使用命令
show create table test.location
右键单击所选行并选择在查看器中打开值
选择标签文本
【讨论】:
【参考方案12】:MySQL Workbench 6.3E 解决方案
在左侧面板上,右键单击您的表格并选择“表格检查器” 在中心面板上,单击 DDL 标签【讨论】:
【参考方案13】:-
打开 MySQL 工作台 (6.3 CE)
在“导航器”中选择“管理”
然后选择“数据导出”(这里选择要导出创建脚本的表)
在下拉菜单中选择“转储结构和数据”
选中复选框“包括创建架构”
单击“开始导出”按钮
导出完成后,它将显示导出文件在系统中转储的位置。转到该位置并打开导出的文件以找到建表脚本。
或查看https://dev.mysql.com/doc/workbench/en/wb-admin-export-import-management.html
【讨论】:
以上是关于如何在 MySQL Workbench 中获取表创建脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 macOS 上的 MySQL Workbench 获取忘记的 MySQL 密码?
如何在Ubuntu 20.04上安装MySQL Workbench?
SQL Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?