查询以获取MySql表的所有CREATE语句

时间:2013-08-05 05:02:37

标签: mysql sql information-schema

我希望1个查询结果中的MySql Tables的所有 CREATE 语句。

例如, INFORMATION_SCHEMA 包含所有表名,注释等,但 CREATE 语句存储在MySql中的哪个位置?可以在一个查询中检索所有表吗?

目前我正在为1个表检索 TABLE ddl,如下所示。我有100个表,所以每次都可以重复相同的时间,这是时间的过程

show create table row_format;

4 个答案:

答案 0 :(得分:19)

mysqldump -h localhost -u root -p --no-data --compact  some_db


mysqldump -d --compact --compatible=mysql323 ${dbname}|egrep -v "(^SET|^/\*\!)"

How do I use mysqldump to export only the CREATE TABLE commands

答案 1 :(得分:1)

有人向我展示了一种更简单的方法。

  1. 突出显示所有表
  2. 右键单击。
  3. 选择“复制到剪贴板”,然后选择“创建语句”。
  4. 转到文本编辑器并粘贴所有内容。

答案 2 :(得分:0)

我今天需要这个,the mysqldump answer 为我生成了一个我无法导入的 .sql 文件:它声明了完整的 CREATE TABLE 语句,外键指向它尚未声明的表。

相反,我使用了 Liquibase

  1. 下载 MySQL Connector/J(选择平台无关):https://dev.mysql.com/downloads/connector/j/

  2. 从您下载连接器 jar 的目录中,创建一个 liquibase.properties 文件并像这样编辑它:

outputDefaultSchema=true
includeSchema=true
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/replace_with_your_db
username=replace with your MySQL user
password=replace with your MySQL password
classpath=full path of the MySQL connector, for instance C:\mysql-connector-java-8.0.21.jar
  1. Install Liquibase 然后运行:
liquibase --changeLogFile=schema.mysql.sql generateChangeLog

这将为您的架构生成 SQL 命令,所有命令都按正确的顺序进行。

例如:

CREATE TABLE address (id BIGINT AUTO_INCREMENT NOT NULL, line VARCHAR(128) NULL, owner_id BIGINT NOT NULL);
CREATE TABLE person (id BIGINT AUTO_INCREMENT NOT NULL, name VARCHAR(64) NOT NULL);
ALTER TABLE address ADD CONSTRAINT fk_address_person FOREIGN KEY (owner_id) REFERENCES person (id) ON UPDATE RESTRICT ON DELETE RESTRICT;

答案 3 :(得分:0)

  1. 选择所需的数据库
  2. 选择您想要SHOW CREATE TABLE的表格(勾选所有所有表格
  3. 点击下拉菜单With Selected:并选择显示创建