# csv datei in PostgreSQL datenbank einlesen



## Nessrin (15. Nov 2007)

Hallo allerseits   ,

Ich möchte csv datein einlesen und in meiner Datenbank speichern,
Ich habe folgendes Problem es bricht vorzeitig ab und speichert die Daten nicht in der Datenbank, Ich bekomme folgenden Fehler, 

java.sql.BatchUpdateException: Batch-Eintrag 0 CREATE TABLE csvimport

Kann jemanden mir bitte helfen  ???:L  , 

Mein Code sieht wie folgt aus 

```
public class CSV {
  String datei = "datei.csv";
  String trennzeichen = ";";
  String ersatzzeichen = "#####";
  public Manager datenbank = new Manager();
  public CSV() {
    try {
      datenbank.connectDB();
      RE trenner = new RE(trennzeichen);
      RE ersatz = new RE(ersatzzeichen);
      
      Connection c = datenbank.getConnection();
      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(1000)";
        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();
      datenbank.closeDB();
      System.out.print("Update Counts");
      for (int i = 0; i < udc.length; i++) System.out.print(" ICH binnnnnn" + udc[i]);
    }
    catch (Exception ex) { ex.printStackTrace(); }
  }
  public static void main(String[] args) throws Exception {
    new CSV();
  }
}
```

Schöne Grüße


----------



## HoaX (15. Nov 2007)

toll, und was sollten wir nun sehen?


```
try { s.execute("DROP TABLE csvimport"); } catch(Exception ex) {}
```
 das ist ekelhaft, ein 
	
	
	
	





```
e.printStackTrace();
```
 ist das mindeste was in einen catchblock sollte.

wieso minimierst du uns nicht deinen code auf das wesentliche? das wäre die fertige zusammengebaute query + der aufruf dieser query wos schief geht. hellsehen kann hier keiner


----------

