我正在使用一个Java程序的MySql数据库,现在我想把程序交给其他人。

如何导出MySql数据库结构没有数据在它,只是结构?


当前回答

使用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中执行此操作,那么将此命令作为参数传递给runtime exec()方法。

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

其他回答

你可以在mysqldump命令中使用——no-data选项

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

不使用输出的转储。

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

使用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中执行此操作,那么将此命令作为参数传递给runtime exec()方法。

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

您可以在mysqldump命令下使用-d选项

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

是的,你可以使用mysqldump——no-data选项:

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