Announcement

Collapse
No announcement yet.

ResultSet in eine CSV Datei schreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ResultSet in eine CSV Datei schreiben

    Hallo Leute,

    ich muss zur Zeit 4500 Datensätze (23 Spalten) aus einer Oracle DB auslesen und möglichst schnell in eine CSV-Datei speichern. Das Auslesen funktioniert ohne weiteres. Ich versuche dann auch gleich (entsprechend aufbereitet) die Daten in die CSV Datei zu speichern, aber an dieser Stelle ist auch Schluss mit Lustig. Das ganze für lange Zeit auf. Die Performanz ist garnicht gegeben.

    Das einlesen in die Datei mache ich mit folgendem Code-Abschnitt:

    Code:
    File ausgabeDatei = new File(context.getRealPath("report/report.csv"));
    			
    PrintWriter out = new PrintWriter(new FileWriter(ausgabeDatei));
    
    	String quote = "\"";
    	String sep = ";";
    	while (result.next()) {
    	    for(int i = 1; i <= 23; i++)
    	        out.print(quote + result.getString(i) + quote + sep);
    	    outprintln();
    	}
    	out.close();
    wobei "result" ist mein ResultSet.

    Hat jemand eine Idee für die Steigerung der Performanz an dieser Stelle?

    Für eine Antwort wäre ich sehr dankbar.

    Gruss

    Vitali

  • #2
    Hallo Vitali,

    um große Mengen von Daten auszulesen gibt es viele Tricks. Das einfachste wird sein, erst einmal die fetch-Size mit setFetchSize hochzusetzten. Dann würde ich auf jeden Fall einen Puffer verwenden, also statt

    PrintWriter out = new PrintWriter(new FileWriter(ausgabeDatei));

    ein

    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(ausgabeDatei)));

    Bei sehr großen Datenmengen ist das + eventuelle ein Problem, aber ich würde erst mal die beiden genannten Optimierungen umsetzen.

    Grüße
    Christian

    Comment


    • #3
      Hallo,
      das konkatenieren würde ich aber auch gleich weglassen und einfach einen StringBuffer verwenden und dort die Daten ohne + appenden. Vielleicht kannst du den sogar wiederverwenden, da bin ich mir unsicher.

      Gruß,
      Dirk

      Comment

      Working...
      X