<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-112  評論-73  文章-0  trackbacks-0

    DbUnit測試數(shù)據(jù)庫非常方便,但我更常用的功能是它的數(shù)據(jù)庫導入和導出。尤其在是做一個項目初始數(shù)據(jù)的時候。

    但是一直有一個問題困擾著:

    有一個表T,有字段A,B,C三列。

    最常見的方式是用ANT來執(zhí)行任務,將數(shù)據(jù)保存到xml文件。

    <target name="export" depends="set.dataBase.mysql">
      
    <dbunit driver="${dataBase.driver}" supportBatchStatement="true" url="${dataBase.url}/${dataBase.name}" userid="${dataBase.user}" password="${dataBase.user.password}" classpathref="classpath">
       
    <operation type="INSERT" src="${data.dir}/a.xml" />
      
    </dbunit>
     
    </target>

    a.xml文件格式如下:

    <?xml version='1.0' encoding='UTF-8'?>
    <dataset>
    <a="1" b="1" c="1"/>
    <a="2" b="2" c="2"/>
    </dataset>

    這個時候如果所有字段都不為空還好辦。可以正常導入導出。但是當有一個字段為空的時候就不好辦了。

    為分兩種情況:第一行數(shù)據(jù)某字段為空和非第一行數(shù)據(jù)某字段為空

    當非第一行數(shù)據(jù)某字段為空時XML文件是這樣的

    <?xml version='1.0' encoding='UTF-8'?>
    <dataset>
    <a="1" b="1" c="1"/>
    <a="2" b="2" >
    </dataset>

    表示第二行c字段為空。如果第一為空的時候XML文件變成這樣

    <?xml version='1.0' encoding='UTF-8'?>
    <dataset>
    <a="1" b="1" />
    <a="2" b="2" c="2"/>
    </dataset>

    可是導出到數(shù)據(jù)庫這一列都為空。第二行以后的這一列的非空字段沒有導入進去。

    這個時候就不能使用這個文件格式,查看DBunit源才知道這個格式叫flat. dbunit還支持其他幾種格式數(shù)據(jù):xml、dtd、csv、xls。這里的xml文件的格式是這樣的:

    <!DOCTYPE dataset SYSTEM "dataset.dtd">
    <dataset>
        
    <table name="TEST_TABLE">
            
    <column>COL0</column>
            
    <column>COL1</column>
            
    <column>COL2</column>
            
    <row>
                
    <value>row 0 col 0</value>
                
    <value>row 0 col 1</value>
                
    <value>row 0 col 2</value>
            
    </row>
            
    <row>
                
    <null/>
                
    <value>row 1 col 1</value>
                
    <null/>
            
    </row>
        
    </table>
        
    <table name="SECOND_TABLE">
            
    <column>COLUMN0</column>
            
    <column>COLUMN1</column>
            
    <row>
                
    <value>row 0 col 0</value>
                
    <value>row 0 col 1</value>
            
    </row>
        
    </table>
        
    <table name='EMPTY_TABLE'>
            
    <column>COLUMN0</column>
            
    <column>COLUMN1</column>
        
    </table>
    </dataset>

    這樣就可以指定為空的字段了。

    用起來也簡單,就是加一個format參數(shù)。(才知道為什么老提示format 為空,因為默認的就是flat)

    <target name="export" depends="set.dataBase.mysql">
      
    <dbunit driver="${dataBase.driver}" supportBatchStatement="true" url="${dataBase.url}/${dataBase.name}" userid="${dataBase.user}" password="${dataBase.user.password}" classpathref="classpath">
       
    <operation type="INSERT" src="${data.dir}/a.xml" format="xml"/>
      
    </dbunit>
     
    </target>
    <target name="export" depends="set.dataBase.mysql">
      
    <dbunit driver="${dataBase.driver}" supportBatchStatement="true" url="${dataBase.url}/${dataBase.name}" userid="${dataBase.user}" password="${dataBase.user.password}" classpathref="classpath">
       
    <export dest="c:/a.xml" format="xml">
        
    <table name="a" />
       
    </export>
      
    </dbunit>
     
    </target>

    現(xiàn)在就可以自由的導入導出了.

    posted on 2008-12-09 21:10 Libo 閱讀(2666) 評論(1)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

    評論:
    # re: dbunit支持多種格式導入導出 2008-12-09 22:54 | rocket
    呵呵,dbunit還有更有意思的呢,可以導出相關(guān)的依賴表。不過可惜的是這這種方法不支持部分sql查詢,我現(xiàn)在在做一個dbunit的export extension.可以支持數(shù)據(jù)庫主外鍵依賴的表導出。希望還可以支持業(yè)務邏輯的關(guān)聯(lián)關(guān)系。  回復  更多評論
      
    主站蜘蛛池模板: 真正全免费视频a毛片| 2019中文字幕免费电影在线播放| 黑人大战亚洲人精品一区 | 中文字幕av免费专区| 亚洲视频在线视频| 国产资源免费观看| 国产高清不卡免费视频| 亚洲综合av一区二区三区不卡| 免费a级黄色毛片| 最近中文字幕大全中文字幕免费 | 亚洲天堂一区二区三区| 超pen个人视频国产免费观看| 高清永久免费观看| 亚洲毛片基地4455ww| 亚洲色大成网站www永久一区| 精品久久久久成人码免费动漫| 国产精品小视频免费无限app| 亚洲国产成a人v在线观看 | 亚洲国产精品无码久久| 亚洲AV无码久久精品色欲| 精品国产麻豆免费网站| 中文字幕视频免费| 一级女人18片毛片免费视频| 中文字幕在线日亚洲9| 久久久久久久久亚洲| 四虎永久在线精品视频免费观看| 8x8x华人永久免费视频| 中文字幕看片在线a免费| 亚洲国产成人久久精品大牛影视 | 九月丁香婷婷亚洲综合色| 国产男女猛烈无遮档免费视频网站| 三年片在线观看免费| 十八禁的黄污污免费网站| 亚洲影院天堂中文av色| 亚洲老熟女@TubeumTV| 亚洲一区二区三区在线观看精品中文 | 亚洲日本中文字幕一区二区三区| 国产免费毛不卡片| 99re热精品视频国产免费| 巨胸喷奶水www永久免费| 一本久久免费视频|