データを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ができそうです。結構便利です。 関連リンク †この記事は 現在のアクセス:52538 |