`
VANDIC
  • 浏览: 1384 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用dbunit备份还原数据库

阅读更多

<!-- pom.xml 引入dbunit -->
<dependency>
<groupId>dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.1</version>
</dependency>


JAVA代码:

package com.sinba.common.config.backup.service;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.dbunit.DatabaseUnitException;
import org.dbunit.database.DatabaseConfig;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;

import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
import org.dbunit.ext.mysql.MySqlDataTypeFactory;
import org.dbunit.ext.mssql.MsSqlDataTypeFactory;

 


public class DBXMLHelper{

 /** 
   * 获取连接 
   * @return 
   * @throws DatabaseUnitException 
  */ 
  private IDatabaseConnection getConnection(){
  
   Properties hibernateProperties=new Properties();
   InputStream in = DBXMLHelper.class.getResourceAsStream("/hibernate.properties");
  
   IDatabaseConnection connection=null;
  
   try {
   
   hibernateProperties.load(in);
   //处理连接字符串、密码
   String driverClassName=hibernateProperties.getProperty("dataSource.driverClassName");
   String username=hibernateProperties.getProperty("dataSource.username");
   String password=hibernateProperties.getProperty("dataSource.password");
   String serverName=hibernateProperties.getProperty("dataSource.serverName");
   String databaseName=hibernateProperties.getProperty("dataSource.databaseName");
   String url=hibernateProperties.getProperty("dataSource.url")
   .replace("${dataSource.serverName}",serverName)
   .replace("${dataSource.databaseName}",databaseName);
   
   Class.forName(driverClassName);
   Connection conn=DriverManager.getConnection(url,username,password);
   connection = new DatabaseConnection(conn,databaseName);
   
   //忽略约束
   connection.getConnection().prepareStatement("set @@session.foreign_key_checks = 0").execute();
   
   if("com.mysql.jdbc.Driver".equals(driverClassName)){//MySQL
    connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new MySqlDataTypeFactory()); 
   }else{//SQLServer
    connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new MsSqlDataTypeFactory()); 
   }
 
  } catch (Exception e1) {
   e1.printStackTrace();
  }
  
  return connection;
  }
 
    /**
     * 导出数据库.
     * @param connection
     * @param fileName
     * @param streamed
     * @param flat
     * @throws SQLException
     * @throws DatabaseUnitException
     * @throws FileNotFoundException
     * @throws IOException
     */
    public void exportDatabase(String fileName)
     throws SQLException, DatabaseUnitException, FileNotFoundException,IOException {  
     
        IDataSet dataset =getConnection().createDataSet();
        FlatXmlDataSet.write(dataset, new FileOutputStream(fileName));
    }  
 
    /**
     * 直接还原数据库(不清除数据).
     * @param connection
     * @param input
     * @param streamed
     * @param flat
     * @throws DatabaseUnitException
     * @throws SQLException
     */
    public void refreshData(String input)
     throws DatabaseUnitException, SQLException,FileNotFoundException,IOException {  
     
        IDataSet dataSet = new FlatXmlDataSet(new File(input), true);
        DatabaseOperation.CLEAN_INSERT.execute(getConnection(), dataSet);
    }

}

分享到:
评论

相关推荐

    使用dbunit测试数据库

    在使用 DbUnit 进行数据库测试时,首先需要准备测试环境。在这个例子中,我们创建了一个名为 "student" 的测试数据库,该数据库是在 MySql 中建立的。接着,在一个名为 "DBUnitSample" 的 Java 工程中,导入了 ...

    spring+dbunit测试访问数据库代码

    标题中的“spring+dbunit测试访问数据库代码”指的是在Java开发中使用Spring框架与DBUnit进行集成,以实现对数据库的测试。DBUnit是用于数据库单元测试的工具,它可以加载和验证数据库的数据状态,确保测试的隔离性...

    使用DbUnit测试数据库.pdf

    首先,为了使用DbUnit,你需要下载DbUnit的工具包,通常包括DbUnit的核心jar文件以及与你所使用的数据库兼容的JDBC驱动。在这个例子中,我们使用的是MySQL数据库,所以需要导入对应的MySQL JDBC驱动。创建一个新的...

    如何使用DBUnit做数据备份恢复

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它提供了一种方式来管理和操作数据库的数据,包括...在给定的文件中,你可以学习如何解析和使用这些数据文件,以及如何利用 DBUnit 实现数据库的备份和恢复功能。

    DBUNIT使用

    在使用 DbUnit 进行数据库测试时,用户需要连接到真实数据库,并拥有对数据库或者至少是其中的模式(schema)的独占访问权限,以免不同的开发人员同时运行测试时相互冲突。 DbUnit 的使用场景非常广泛,例如可以...

    Dbunit数据库连接下载

    Dbunit 是一个强大的Java库,专门用于数据库的测试和数据管理。它被广泛应用于软件开发过程中,特别是对于那些依赖于数据库的应用程序,因为Dbunit能够帮助开发者有效地管理和控制数据库的状态,确保测试的一致性...

    DBUnit最佳实践之数据备份与恢复

    在“DBUnit最佳实践”中,作者可能还会讨论如何结合使用DBUnit与其他工具,如Ant或Maven构建工具,以及持续集成服务器如Jenkins,来自动化数据备份和恢复的过程。这样可以节省手动操作的时间,并减少人为错误的可能...

    dbunit-2.4.9 源码

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架的一部分,提供...通过分析其源码和参考 API 文档,开发者不仅可以掌握如何使用 DBUnit,还能学习到数据库操作、测试策略和设计模式等相关知识。

    DBUnit与H2内存数据库结合(单元测试)

    DBUnit与H2内存数据库结合是进行单元测试的一种高效方法,尤其在开发Java应用程序时,它可以帮助开发者确保数据层的功能正确性。这篇文章将详细介绍如何利用DBUnit和H2内存数据库来构建单元测试环境。 首先,DBUnit...

    dbunit使用必需Jar包

    DBUnit 是一个开源的 Java 工具,它与JUnit结合使用,用于数据库的测试驱动开发(TDD)。在Java应用程序的测试过程中,确保数据库状态的一致性是非常重要的,DBUnit 提供了这样的功能,它允许开发者导入和导出数据库...

    介绍dbunit的使用和原理,核心组件介绍

    DbUnit 是一个针对数据库驱动项目的JUnit扩展,同时也可用于Ant构建工具。它的主要功能是能够将数据库数据导出到XML数据集,并从XML数据集中导入,从而支持数据库的测试和数据管理。DbUnit还允许你验证数据库中的...

    DBUnit 进行单元测试

    DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境可以被精确地设置和还原,避免了因为测试数据污染而引起的错误。 在进行单元测试时,DBUnit 允许我们将数据库的状态定义为“预期状态”(通常在...

    dbunit-2.4.7所有jar以及dbunit入门教程

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架(如 JUnit)的一个扩展。在数据库驱动的项目中,DBUnit 可以帮助开发者确保数据库状态的一致性,使得测试更加可靠。DBUnit 2.4.7 版本包含了...

    dbunit2.2

    在“dbunit-2.2”这个压缩包中,用户将找到DBUnit库的jar文件以及其他必要的文档和资源,用于在项目中集成和使用DBUnit 2.2进行数据库单元测试。通过这个工具,开发者可以确保数据库层的功能正确无误,提高代码质量...

    dbunit使用实例

    4. **数据库连接(Database Connection)**: 在使用 DBUnit 之前,需要配置一个数据库连接。这可以通过 JDBC URL、用户名和密码实现。 ### 使用 DBUnit 的步骤 1. **初始化**: 首先,你需要创建一个 `...

    dbunit-2.2.3-prj.rar_DbUnit 2.2_dbunit_单元测试

    3. 填充数据库:在测试前使用DbUnit的`IDatabaseConnection`接口和`DataSetLoader`加载数据集到数据库。 4. 执行测试:运行测试代码,这将与数据库交互并执行相关操作。 5. 验证结果:在测试结束后,使用DbUnit的`...

    spring与dbunit集成测试

    5. **加载和清理数据**:在测试方法的前后,使用DBUnit的`IDatabaseConnection`和`IDataSet`接口加载数据集到数据库,并在测试结束后清理数据。Spring的`@Before`和`@After`注解可以用来标记这些方法。 6. **编写...

    dbunit数据库测试工具

    用于数据库测试的一个工具,具有很强的灵活性。也是自己在网上找的,分享一下

Global site tag (gtag.js) - Google Analytics