# JDBC: Viele Datensätze in Tabelle einfügen: Wie?



## McFraggle (16. Jul 2007)

Hallo!
Ich muss Daten für eine Tabelle zusammenbasteln und diese dann in die Tabelle einfügen.
Das Einfügen geschieht indem ich die Werte in einen RIESEN String für ein insert-statement zusammensetze.
Funktioniert grundsätzlich. Das Problem: Das Zusammenbauen des Strings dauert ewig lange!
Das insert-statement dann abzusetzen geht dem gegenüber ratze-fix!

Weiß jemand, wie ich die Werte performanter einfügen kann, bzw. wie ich einen RIESEN String schneller zusammensetzen kann?

Danke für Anregungen!


----------



## abollm (16. Jul 2007)

McFraggle hat gesagt.:
			
		

> Hallo!
> Ich muss Daten für eine Tabelle zusammenbasteln und diese dann in die Tabelle einfügen.
> Das Einfügen geschieht indem ich die Werte in einen RIESEN String für ein insert-statement zusammensetze.
> Funktioniert grundsätzlich. Das Problem: Das Zusammenbauen des Strings dauert ewig lange!



Das ist IMO zunächst einmal ein JDBC vorgelagertes Problem, sofern du das Zusammenbauen des Strings nicht direkt in der DB vornehmen solltest.

Kannst du das mit dem Zusammenbauen des "RIESEN-Strings" einmal näher erläutern?



			
				McFraggle hat gesagt.:
			
		

> Das insert-statement dann abzusetzen geht dem gegenüber ratze-fix!
> 
> Weiß jemand, wie ich die Werte performanter einfügen kann, bzw. wie ich einen RIESEN String schneller zusammensetzen kann? [..]



Siehe oben, aber noch eine Frage: Welches RDBMS verwendest du?


----------



## DP (16. Jul 2007)

du wirst wohl die strings mit


```
"string1" + "string2" + "wasauchimmer"
```

zusammenbauen.

nimm besser einen stringbuffer oder bei neueren versionen stringbuilder


----------



## McFraggle (17. Jul 2007)

Im Grunde läuft das mit den Strings wie DP es vermutet hat, nur das die Konkatenation in einer einige-tausen-Zyklen langen while-Schleife geschieht. Ich nutze mySQL 5.

Der Tip mit dem StringBuilder sieht vielversprechend aus! Ich mache mich ans probieren....


----------



## ARadauer (17. Jul 2007)

muss meinen vorrednern zustimmen:

1. StringBuffer
2. Prepared Statements
3. mehrere inserts in einem query

das performt bei mir extrem gut, hab systeme wo ich 10.000 datensätze in 2-3 sekunden in eine datenbank schreibe, das geht schon finde ich.

also mit meehrere inserts in einem query mein ich sowas hier "INSERT INTO test (feld1, feld2, feld3) VALUES ('aa', 'bb', 'cc'), ('dd', 'ee', 'ff') usw..."


----------



## McFraggle (17. Jul 2007)

Ja, also mit StringBuilder geht's *erheblich* schneller. 

Kann mir jemand das mit den Prepared Statements noch etwas näher erläutern?


----------



## P3AC3MAK3R (17. Jul 2007)

McFraggle hat gesagt.:
			
		

> Kann mir jemand das mit den Prepared Statements noch etwas näher erläutern?


http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html


----------



## McFraggle (19. Jul 2007)

Danke!!!


----------

