导出不含数据的架构

问题描述 投票:0回答:16

我正在使用 MySql 数据库和 Java 程序,现在我想将该程序交给其他人。

如何导出MySQL数据库结构而不包含数据,只导出结构?

sql mysql database database-schema dump
16个回答
1263
投票

您可以使用 mysqldump 命令的

--no-data
选项来完成

mysqldump -h yourhostnameorIP -u root -p --no-data dbname > schema.sql

130
投票

是的,您可以将

mysqldump
--no-data
选项一起使用:

mysqldump -u user -h localhost --no-data -p database > database.sql

25
投票

您还可以使用

--no-data
选项提取单个表格

mysqldump -u user -h localhost --no-data -p database tablename > table.sql

9
投票

您可以将 -d 选项与 mysqldump 命令一起使用

mysqldump -u root -p -d databasename > database.sql

8
投票

不使用输出进行转储。

mysqldump --no-data <database name> --result-file=schema.sql

8
投票

请注意 --no-data 选项不会包含视图定义。所以如果你有如下的观点

create view v1 
 select `a`.`id` AS `id`,
 `a`.`created_date` AS `created_date` 
from t1;

使用 --no-data 选项,视图定义将更改为以下

create view v1
 select 1 AS `id`, 1 AS `created_date`

6
投票

如果您使用 IntelliJ,您可以启用数据库视图(视图 -> 工具窗口 -> 数据库)

在该视图中连接到您的数据库。然后你可以右键单击数据库并选择“复制DDL”。其他 IDE 可能提供类似的功能。

IntelliJ DDL


4
投票

您可以使用免费的 MYSQL 管理员工具 http://dev.mysql.com/downloads/gui-tools/5.0.html

您会发现许多导出 MYSQL 数据库的选项


4
投票

如果您想转储所有数据库中的所有表并且没有数据(仅数据库和表结构),您可以使用:

mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql

这将生成一个 .sql 文件,您可以将其加载到 mysql 服务器上以创建新数据库。 在生产环境中,这种情况的用例并不多,但我每周都会这样做,以重置链接到演示网站的服务器,因此无论用户在一周内做什么,在周日晚上,一切都会回滚到“新”: )


2
投票

添加 --routines 和 --events 选项以还包括存储的例程和事件定义

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql

1
投票

shell> mysqldump --no-data --routines --events 测试 > dump-defs.sql


1
投票

使用mysql-backup4j,只需几行代码即可轻松备份任何数据库。这将为数据库生成sql转储,稍后可用于轻松恢复数据库。

所需的 Maven 依赖项是:

 <dependency>
        <groupId>com.smattme</groupId>
        <artifactId>mysql-backup4j</artifactId>
        <version>1.0.1</version>
    </dependency>

这是 java 中的实现..您可以使用很酷的参数集

/**
 * Creator : Tanvir Chowdhury
 * Date    : 2021-11-15
 */
public class BackupDatabase {
    public static void main(String[] args) throws Exception {

        Properties properties = new Properties();
        properties.setProperty(MysqlExportService.DB_NAME, "hcs_test_db");
        properties.setProperty(MysqlExportService.DB_USERNAME, "root");
        properties.setProperty(MysqlExportService.DB_PASSWORD, "root");
        properties.setProperty(MysqlExportService.DELETE_EXISTING_DATA, "true");
        properties.setProperty(MysqlExportService.DROP_TABLES, "true");
        properties.setProperty(MysqlExportService.ADD_IF_NOT_EXISTS, "true");
        properties.setProperty(MysqlExportService.JDBC_DRIVER_NAME, "com.mysql.cj.jdbc.Driver");
        properties.setProperty(MysqlExportService.JDBC_CONNECTION_STRING, "jdbc:mysql://localhost:3306/hcs_test_db");

        properties.setProperty(MysqlExportService.TEMP_DIR, new File("/Users/tanvir/Desktop/backups/backup.sql").toString());
        properties.setProperty(MysqlExportService.PRESERVE_GENERATED_ZIP, "true");

        MysqlExportService mysqlExportService = new MysqlExportService(properties);
        mysqlExportService.export();

    }
}

如果需要,您还可以轻松使用邮件发送选项将备份文件发送到任何电子邮件地址。

或者您可以使用 mysqldump 命令使用 --no-data 选项。如果您想从 java 执行此操作,请将此命令作为参数传递给运行时 exec() 方法。

mysqldump -u root -h localhost --no-data -proot hcs_db_one?useSSL=false > db_one_dump.sql

1
投票

您可以使用以下方法来服用

mysqldump -d <database name> > <filename.sql> // -d : without data

1
投票

例如,您可以使用

-d(--no-data)
仅将
apple
数据库的表架构导出到 backup.sql,如下所示。 *我的回答解释了如何导出数据库表的架构和数据:

mysqldump -u john -p -d apple > backup.sql

或者:

mysqldump -u john -p --no-data apple > backup.sql

0
投票

获取单个表的创建脚本:
- 选择所有表格(使用shift键)
- 只需右键单击表名称,然后单击“复制到剪贴板”>“创建语句”。


0
投票

从 phpmyadmin 您可以执行以下操作:

  1. 导出
  2. 导出方式:自定义-显示所有可能的选项
  3. 格式特定选项:结构NOT结构和数据

导出整个数据库:

© www.soinside.com 2019 - 2024. All rights reserved.