使用Java实现数据库备份和恢复,可以使用JDBC连接数据库,执行SQL语句进行备份和恢复操作。
数据库备份
1、使用命令行工具进行备份
对于MySQL数据库,可以使用mysqldump
命令进行备份,以下是一个示例:
mysqldump u 用户名 p 数据库名 > 备份文件名.sql
对于Oracle数据库,可以使用exp
或expdp
命令进行备份,以下是一个示例:
exp 用户名/密码@数据库名 file=备份文件名.dmp
2、使用Java程序进行备份
需要添加数据库驱动依赖,以MySQL为例,在Maven项目的pom.xml文件中添加以下依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysqlconnectorjava</artifactId> <version>8.0.26</version> </dependency>
编写Java程序进行备份:
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DatabaseBackup { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String user = "用户名"; String password = "密码"; String backupFileName = "备份文件名.sql"; String tableNames = "表名1,表名2,表名3"; // 用逗号分隔多个表名 try (Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement()) { // 获取所有表名 ResultSet resultSet = statement.executeQuery("SHOW TABLES"); while (resultSet.next()) { tableNames += "," + resultSet.getString(1); } resultSet.close(); statement.close(); // 生成备份文件路径和内容 File backupFile = new File(backupFileName); FileWriter fileWriter = new FileWriter(backupFile); fileWriter.write("创建时间:" + System.currentTimeMillis() + " "); fileWriter.write("数据库名:" + url.substring(url.indexOf("/") + 1, url.indexOf("?")) + " "); fileWriter.write("表结构开始 "); for (String tableName : tableNames.split(",")) { fileWriter.write("DROP TABLE IF EXISTS " + tableName + "; "); resultSet = statement.executeQuery("SHOW CREATE TABLE " + tableName); while (resultSet.next()) { fileWriter.write(resultSet.getString(2) + "; "); } resultSet.close(); fileWriter.write("表结构结束 "); } fileWriter.close(); System.out.println("数据库备份成功,文件路径:" + backupFile.getAbsolutePath()); } catch (SQLException | IOException e) { e.printStackTrace(); } } }
数据库恢复(以MySQL为例)
1、使用命令行工具进行恢复
将备份文件导入到数据库中:
mysql u 用户名 p 数据库名 < 备份文件名.sql
执行以下命令刷新权限:
FLUSH PRIVILEGES;
2、使用Java程序进行恢复(以MySQL为例)
需要添加数据库驱动依赖,在Maven项目的pom.xml文件中添加以下依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysqlconnectorjava</artifactId> <version>8.0.26</version> </dependency>
编写Java程序进行恢复:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.io.FileUtils; // 添加Apache Commons IO库依赖,用于读取文件内容到字符串列表中,在pom.xml文件中添加以下依赖:<dependency><groupId>commonsio</groupId><artifactId>commonsio</artifactId><version>2.11.0</version></dependency>。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/643674.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复