データをExcel形式でエクスポートする †さて、Java/DBUnit/XMLでImport,Exportする でxmlファイルをimport/exportできるのはわかりましたが、このxmlファイルを手で作らなくてはいけないんだったら、結局面倒ですね。つうことで今度はExcel形式でExportします。AntタスクにはExcel関連のものはないっぽく、プログラムを作る必要があります。っても以下の感じ。 public static void main(String[] args) {
DOMConfigurator.configure("log4j.xml");
IDatabaseConnection con = null;
try {
con = getConnection();
IDataSet dataset = con.createDataSet();
XlsDataSet.write(dataset, new FileOutputStream("export.xls"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
getConnectionは以下のようにしました。DataSource?を作るのが面倒だったのでDIでInjectionしてます。 protected static IDatabaseConnection getConnection() throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "hibernate-spring_test.xml" });
DataSource datasource = (DataSource) context.getBean("dataSource");
return new DatabaseConnection(datasource.getConnection(), "webdb1");<-schema名
}
でdataSourceのJavaBeans?はorg.apache.commons.dbcp.BasicDataSource?を使ってこんな感じ。
実行するとexport.xlsが出力されます。内容は以下の通り テーブルがExcelのシートになってるところがシブイです。 データをExcelからインポートする †さて最後です。Excelファイルをimportします。さっきのxlsファイルをインポートデータとして使用します。import.xlsとしました。 public static void main(String[] args) {
DOMConfigurator.configure("log4j.xml");
IDatabaseConnection con = null;
try {
con = getConnection(); // <- Exportのときと同じ
IDataSet dataset = new XlsDataSet(new File("import.xls"));
DatabaseOperation.CLEAN_INSERT.execute(con, dataset);
// deleteしてからinsert
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
実行すれば、全件Delete後import.xlsの内容がテーブルに反映されます。簡単ですね。 つかってみて †これでテストデータをオラーってExcelで作成して、ドカンとimportができそうです。結構便利です。 関連リンク †この記事は 現在のアクセス:195 |