天天看點

mysql怎麼 擷取表的腳本_如何在MySQL Workbench中擷取表建立腳本?

我也找不到這樣的選擇,至少在社群版。

我想這對應于Reverse Engineering功能,不幸的是,隻有在商業版(引用)可用:

reverse engineering a database

directly from a MySQL server applies

to commercial versions of MySQL

Workbench only.

盡管如此,您可以使用plain-SQL來擷取create table指令,這将允許您建立一個表。

例如,以下查詢:

show create table url_alias;

當在drupal資料庫上執行時,會給出,當使用右鍵單擊>複制字段内容的結果:

'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查詢浏覽器之外,最簡單的解決方案很可能是使用指令行用戶端連接配接到資料庫,并執行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開關,你隻會得到結構 – 在一些模式設定和所有的中間。