2016年3月1日火曜日

データロードの方法あれこれ

ESBグループの打田です。


ひょんなことからファイルを読んでRDBのテーブルへ挿入するサンプルコードをjavaで書きました。

ソースはこちら。
public static void main(String[] args) throws Exception {
    Driver d = (Driver) Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    String connUrl =
            "jdbc:sqlserver://localhost:1433;database=IW03;"
            + "integratedSecurity=false;user=sa;password=pass";
    Connection con = d.connect(connUrl, new Properties());
    con.setAutoCommit(false);
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\FilePolling\\ItemList_20000.txt"), "MS932"));
    int cnt=0;
    while (true) {
        String line = br.readLine();
        if (line == null) {
            break;
        }
        cnt++;
        String[] cols = line.split("\t");
        String insertStatement = "insert into T_IW03_商品マスタ values ( ? , ? , ? , ? , ? , ? , ? )";
        PreparedStatement prepStmt = con.prepareStatement(insertStatement);
        for (int i=0; i<7; i++) {
            if (cols.length <= i) {
                prepStmt.setString(i+1, "");
            } else {
                prepStmt.setString(i+1, cols[i]);
            }
        }
        int result = prepStmt.executeUpdate();
        prepStmt.close();
    }
    br.close();
    con.commit();
}

実はESBを使うと同じことがもっと簡単に出来るのです。
見ての通り、ESBは簡潔にロジックを表現しています。
生産性の向上のためにもっとESBのようなものが普及してくれればなぁと思います。


0 件のコメント:

コメントを投稿