Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Database/JDBC/SQL/JDO/Hibernate
打印话题 寄给朋友 订阅主题 |
作者 | Groovy+DbUnit 轻松实现数据库导入导出 |
Jove
CJSDN高级会员 发贴: 1228 积分: 194 |
于 2004-11-08 09:58
也可以单独使用它的这一功能作数据导入和导出。 与数据库通常自带的备份功能(比如DB2)不同 它使用JDBC来读取数据和元数据,不需要关闭数据库作停机备份 它导出的格式可以是XML格式,方便阅读和编辑 http://groovy.codehaus.org 是一个强大而简洁的脚本语言 这里我们使用它来调用DbUnit,可以方便的更改设置(如数据库连接信息,所选数据集等) 下面给出三个脚本,分别是数据导出,导入,和生成DTD。 代码比较简单,即使没用过DbUnit和Groovy也应该可以大致看明白 以数据导出为例,脚本一开始给出若干设置 用户可以选择导出整个数据库,或是一个列表中的数据表(在代码中指定,或弹出对话框指定) 也可以选择保存文件的路径 使用方法简单介绍: 按照Groovy网站上的信息下载并安装Groovy,下载DbUnit,把dbunit-2.1.jar放入GROOVY_HOME/lib 把所用的JDBC Driver如db2jcc.jar等放入GROOVY_HOME/lib 打开cmd或term, 执行groovy filename export.groovy import groovy.sql.Sql import java.io.* import java.awt.* import javax.swing.* import org.dbunit.database.* import org.dbunit.dataset.* import org.dbunit.dataset.xml.* #JDBC Connection url ='jdbc:db2://9.181.106.179:50000/SAMPLE' driver ='com.ibm.db2.jcc.DB2Driver' user ='db2admin' pwd ='db2admin' #if gui=true,show a fileSaveDialog to select a file to save;otherwise use 'defaultFile' gui=true chooserInitDir='.' defaultFile='data.xml' #Three modes: # 0:export all tables # 1:export tables in a specified list # 2:Show a dialog to select tables to export exportType=2 tableList=['JOVE.NB_USER','JOVE.NB_FOOD','JOVE.NB_BOOKING'] #Main method file=getFileToSave() sql=Sql.newInstance(url,user,pwd,driver) jdbcConnection=sql.getConnection() con = new DatabaseConnection(jdbcConnection) con.getConfig().setFeature("http://www.dbunit.org/features/qualifiedTableNames", true) println 'Reading data and saving..\n' switch(exportType){ case 0:dataset=exportAll(con);break; case 1:dataset=exportTables(con,tableList);break; default:dataset=exportSelected(con) } FlatXmlDataSet.write(dataset, new FileOutputStream(file)) println "Data is saved in ${file}.\n---Press any key to quit---" System.in.read() System.exit(0) def getFileToSave(){ if(gui){ chooser=new JFileChooser(chooserInitDir) chooser.setDialogTitle("Save the exported dataset to") if(chooser.showSaveDialog() == JFileChooser.APPROVE_OPTION) return chooser.getSelectedFile() else System.exit(0) }else return defaultFile } def exportAll(connection) { return connection.createDataSet() } def exportTables(connection,tableList){ dataset=new QueryDataSet(connection) for(table in tableList) dataset.addTable(table) return dataset } def exportSelected(connection){ tables=connection.createDataSet().getTableNames() itemList=new JList(tables) itemList.selectionMode = ListSelectionModel.MULTIPLE_INTERVAL_SELECTION JOptionPane.showMessageDialog(null,new JScrollPane(itemList), 'Select Database Tables',JOptionPane.QUESTION_MESSAGE) return exportTables(connection,itemList.getSelectedValues()) } import.groovy import groovy.sql.Sql import java.io.File import javax.swing.JFileChooser import org.dbunit.database.* import org.dbunit.dataset.* import org.dbunit.dataset.xml.* import org.dbunit.operation.DatabaseOperation gui=false if(gui){ initDir="." chooser=new JFileChooser(initDir); chooser.setDialogTitle("Select xml file to import") if(chooser.showOpenDialog() == JFileChooser.APPROVE_OPTION) file=chooser.getSelectedFile() else System.exit(0) }else file=new File("kiss.data.xml") url ='jdbc:db2://9.181.106.179:50000/SAMPLE' driver ='com.ibm.db2.jcc.DB2Driver' user ='db2admin' pwd ='db2admin' sql=Sql.newInstance(url,user,pwd,driver) jdbcConnection=sql.getConnection() con = new DatabaseConnection(jdbcConnection) con.getConfig().setFeature("http://www.dbunit.org/features/qualifiedTableNames", true) dataSet = new FlatXmlDataSet(file); DatabaseOperation.CLEAN_INSERT.execute(con, dataSet); println "Done.\n---Press any key to quit---" System.in.read() System.exit(0) exportDtd.groovy import groovy.sql.Sql import java.io.* import javax.swing.JFileChooser import org.dbunit.database.* import org.dbunit.dataset.* import org.dbunit.dataset.xml.* gui=false if(gui){ initDir="." chooser=new JFileChooser(initDir) chooser.setDialogTitle("Save the exported DTD to") if(chooser.showSaveDialog() == JFileChooser.APPROVE_OPTION) file=chooser.getSelectedFile() else System.exit(0) }else file="kiss.data.dtd" url ='jdbc:db2://9.181.106.179:50000/SAMPLE' driver ='com.ibm.db2.jcc.DB2Driver' user ='db2admin' pwd ='db2admin' sql=Sql.newInstance(url,user,pwd,driver) jdbcConnection=sql.getConnection() con = new DatabaseConnection(jdbcConnection) con.getConfig().setFeature("http://www.dbunit.org/features/qualifiedTableNames", true) println 'Reading data and saving..' // write DTD file FlatDtdDataSet.write(con.createDataSet(),new FileOutputStream(file)); println "Done.\n---Press any key to quit---" System.in.read() System.exit(0)
Jove edited on 2004-11-08 10:22
|
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
9654 | Groovy+DbUnit 轻松实现数据库导入导出 | Jove | 5639 | 2004-11-08 09:58 |
5394 | Re:Groovy+DbUnit 轻松实现数据库导入导出 | Jove | 20 | 2004-11-08 10:17 |
5434 | Re:Groovy+DbUnit 轻松实现数据库导入导出 | javait | 62 | 2004-11-09 10:10 |
5489 | Re:Groovy+DbUnit 轻松实现数据库导入导出 | Jove | 135 | 2004-11-09 11:03 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |