田中ブログ

さいたまに住んでいる男です。仕事はSESでプログラムを書いてることが多いです。聖地巡礼、日々の生活、技術的なことを書いていこうと思います。

DBUnitを使用してエクセルのデータを登録する

DBUnitを使用してエクセルのデータを登録するものを書いてみたとので記事に。
開発データやテストデータの投入をINSERT文をかかずにやりたいなと思ったのがきっかけです。

GitHub(やり始めでいろいろ汚いですが。)

github.com

環境的なこと

以下の環境で試しています。

  • Postgres
  • Gradle
内容

内容を抜粋すると以下という感じ。
・gradle.build (implementionとかruntimeOnlyとかいまいちな気がするがとりあえず)

    implementation group: 'org.dbunit', name: 'dbunit', version: '2.6.0'
     runtimeOnly 'org.postgresql:postgresql'

Java
いたってシンプルですが、ファイルを開き、DBに接続して、DBUnitのメソッドをたたく感じです。

    public static void main(String[] args) throws Exception {

        // ファイルオープン
        String PATH = "C:\\temp\\import_test.xlsx";
        Path path = Paths.get(PATH);
        File f = path.toFile();

        // DB接続情報
        String url = "jdbc:postgresql://localhost:154322/postgres";
        String user = "postgres";
        String password = "postgres";

        try (Connection conn = DriverManager.getConnection(url, user, password);) {

            try {
                IDatabaseConnection dbconn = new DatabaseConnection(conn);

                IDataSet dataset = new XlsDataSet(f);

                // データの全削除
                DatabaseOperation.DELETE_ALL.execute(dbconn, dataset);

                // データの挿入
                DatabaseOperation.INSERT.execute(dbconn, dataset);

                System.out.println("完了");
            } catch (Exception e) {
                conn.rollback(); // ここでは、connはクローズ済みなので例外がthrowされる!
            }
        }
    }