我正在使用 MySql 数据库和 Java 程序,现在我想将该程序交给其他人。
如何导出MySQL数据库结构而不包含数据,只导出结构?
您可以使用 mysqldump 命令的
--no-data
选项来完成
mysqldump -h yourhostnameorIP -u root -p --no-data dbname > schema.sql
是的,您可以将
mysqldump
与 --no-data
选项一起使用:
mysqldump -u user -h localhost --no-data -p database > database.sql
您还可以使用
--no-data
选项提取单个表格
mysqldump -u user -h localhost --no-data -p database tablename > table.sql
您可以将 -d 选项与 mysqldump 命令一起使用
mysqldump -u root -p -d databasename > database.sql
不使用输出进行转储。
mysqldump --no-data <database name> --result-file=schema.sql
请注意 --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`
如果您使用 IntelliJ,您可以启用数据库视图(视图 -> 工具窗口 -> 数据库)
在该视图中连接到您的数据库。然后你可以右键单击数据库并选择“复制DDL”。其他 IDE 可能提供类似的功能。
您可以使用免费的 MYSQL 管理员工具 http://dev.mysql.com/downloads/gui-tools/5.0.html
您会发现许多导出 MYSQL 数据库的选项
如果您想转储所有数据库中的所有表并且没有数据(仅数据库和表结构),您可以使用:
mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql
这将生成一个 .sql 文件,您可以将其加载到 mysql 服务器上以创建新数据库。 在生产环境中,这种情况的用例并不多,但我每周都会这样做,以重置链接到演示网站的服务器,因此无论用户在一周内做什么,在周日晚上,一切都会回滚到“新”: )
添加 --routines 和 --events 选项以还包括存储的例程和事件定义
mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql
shell> mysqldump --no-data --routines --events 测试 > dump-defs.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 执行此操作,请将此命令作为参数传递给运行时 exec() 方法。
mysqldump -u root -h localhost --no-data -proot hcs_db_one?useSSL=false > db_one_dump.sql
您可以使用以下方法来服用
mysqldump -d <database name> > <filename.sql> // -d : without data
例如,您可以使用
-d(--no-data)仅将
apple
数据库的表架构导出到 backup.sql
,如下所示。 *我的回答解释了如何导出数据库表的架构和数据:
mysqldump -u john -p -d apple > backup.sql
或者:
mysqldump -u john -p --no-data apple > backup.sql
获取单个表的创建脚本:
- 选择所有表格(使用shift键)
- 只需右键单击表名称,然后单击“复制到剪贴板”>“创建语句”。