• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何使用DBUnit做數據備份恢復

    發表于:2009-03-30來源:作者:點擊數: 標簽:DBUnitDbUnitdbunit
    用 DBUnit 做數據備份恢復工具 DBunit(http://dbunit.sourceforge.net/)是一個非常好的數據庫unit系列工具. 一般都是用它在 測試 的時候管理數據庫。我們可以發揮一下,用它做一個備份和恢復的數據庫管理工具。 以 mysql 為例,正好現在還沒有找一個好用的my
    DBUnit 做數據備份恢復工具

    DBunit(http://dbunit.sourceforge.net/ )是一個非常好的數據庫unit系列工具.
    一般都是用它在測試的時候管理數據庫。我們可以發揮一下,用它做一個備份和恢復的數據庫管理工具。

    mysql
    為例,正好現在還沒有找一個好用的mysql備份和恢復工具。這個是在代碼中管理不是用ant的方式。

    主要是用到核心組件:IDatabaseConnection、IDataSet、DatabaseOperation 。

    先看代碼:
       /**
         * 導出數據到指定文件
         * @param file 一個標準的java.io.File
         * @param connection  一個標準的java.sql.Connection
         * @throws org.dbunit.DatabaseUnitException
         */
        public static void exportRoom(File file, Connection connection) throws DatabaseUnitException, IOException {
            IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
            QueryDataSet dataSet = new QueryDataSet(databaseConnection);
            dataSet.addTable("room");
            Writer writer = new FileWriter(file);
            XmlDataSetWriter w = new XmlDataSetWriter(writer);
            w.write(dataSet);
            writer.flush();
            writer.close();
        }
    在這個方法中指定了一個表名"room",如果有多個表可以通過參數或其他的方式按照這種方式繼續增加。這個文件是XML格式的。具體格式說明或其他格式參見http://dbunit.sourceforge.net/components.html#databaseconnection

        /**
         * 導入數據到ROOM表
         * @param file  一個標準的java.io.File
         * @param connection 一個標準的java.sql.Connection
         */
        public static void importRoom(File file, Connection connection) throws DatabaseUnitException, IOException, SQLException {
            IDataSetProducer dataSetProducer = new XmlProducer(FileHelper.createInputSource(file));
            IDataSet dataSet = new CachedDataSet(dataSetProducer);
            IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
            DatabaseOperation operation = DatabaseOperation.CLEAN_INSERT;
            DatabaseOperation.TRANSACTION(operation);
            operation.execute(databaseConnection, dataSet);
            DatabaseOperation.CLOSE_CONNECTION(operation);
        }
    這個方法可以把上面生成的XML文件導入到數據庫中,如果是其他格式的文件只需要更換IDataSetProducer的實現類就可以了。具體格式請參見APIDOC
    在這個方法里使用了事務控制,保證數據的一致性。

    有了這兩個方法我們就可以再發揮一下,然后為客戶提供一個備份恢復數據的工具了。如果再加入壓縮文件的支持就更加完美了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>