// Programm 3-16: BSP_ROOT/meinewebapp/WEB-INF/classes/jdbcbasis/CsvImportBatch.java
import java.sql.*;
import java.io.*;
import org.apache.regexp.*;

public class CsvImportBatch {
  String datei = "import.csv";
  String trennzeichen = ";";
  String ersatzzeichen = "#####";
  public CsvImportBatch() {
    try {
      RE trenner = new RE(trennzeichen);
      RE ersatz = new RE(ersatzzeichen);
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection c = DriverManager.getConnection("jdbc:odbc:Kurse");
      Statement s = c.createStatement();
      BufferedReader in = new BufferedReader(new FileReader(datei));
      String zeile = in.readLine();
      String[] spalten = trenner.split(zeile);
      try { s.execute("DROP TABLE csvimport"); } catch(Exception ex) {}
      String neu = "CREATE TABLE csvimport (";
      String sql = "INSERT INTO csvimport(";
      for (int i = 0; i < spalten.length; i++) {
        neu += spalten[i] + " CHAR(255)";
        sql += spalten[i];
        if (i != spalten.length - 1 ) { neu += ","; sql += ","; }
      }
      neu += ")";
      sql += ") VALUES(";
      for (int i = 0; i < spalten.length; i++) {
        sql += "'" + ersatzzeichen + "'";
        if (i != spalten.length - 1 ) sql += ",";
      }
      sql += ")";
      System.out.println(neu);
      c.setAutoCommit(false);
      s.addBatch(neu);
      while ((zeile = in.readLine()) != null) {
        spalten = trenner.split(zeile);
        String sqli = sql;
        for (int i = 0; i < spalten.length; i++) {
          sqli = ersatz.subst(sqli, spalten[i], RE.REPLACE_FIRSTONLY);
        }
        s.addBatch(sqli);
        System.out.println(sqli);
      }
      int[] udc = s.executeBatch();
      c.commit();
      c.close();
      System.out.print("Update Counts");
      for (int i = 0; i < udc.length; i++) System.out.print(" " + udc[i]);
    }
    catch (Exception ex) { ex.printStackTrace(); }
  }
  public static void main(String[] args) throws Exception {
    new CsvImportBatch();
  }
}