# Auslesen aus einer csv-Datei



## Alex_winf01 (16. Jan 2008)

Hallo liebe Forengemeinde!

Ich habe folgendes Problem:


```
Select 'update dokumentation set status = übermittelt' from csvread('export.csv')
```

Ich habe eine csv-Datei vorliegen und ich möchte alle Datensätze die in dieser Datei drinnstehen updaten (die Spalte status).

Angenommen es steht die Nummer und der Name in dieser Datei und über die Nummer kann ich den Datensatz identifizieren. Wie muss ich den Select-Befehl "basteln"?

Ich verwende die H2-Datenbank.


----------



## Guest (19. Jan 2008)

Selektiere die Daten in eine temporäre Tabelle und führe anschliessend ein Update auf die Zieltabelle aus.


----------



## abollm (19. Jan 2008)

Alex_winf01 hat gesagt.:
			
		

> [..]
> 
> ```
> Select 'update dokumentation set status = übermittelt' from csvread('export.csv')
> ...



Wie gast oben schon sinngemäß schrieb, kannst du die CSV-Datei beispielsweise zuerst in eine temporäre Tabelle oder in eine spezielle Importtabelle (wenn das öffter vorkommt) importieren. Dann über einen Join der Schlüsselspalte einen entsprechenden UPDATE-Befehl absetzen, der dann alle Datenzeilen aktualisiert.

Die andere Varinate ist die, dass du in einer Schleife die CSV-Datensätze einliest und direkt den UPDATE-Befehl pro Schleife absetzt. Das dürfte bei großen Datenmengen *deutlich* langsamer sein. Obwohl ich ehrlich gesagt keine Ahnung habe, wie schnell die Importe bei der H2-DB sind.

BTW: Der SELECT-Befehl ist gar nicht die Herausforderung, bei dir geht es um einen UPDATE-Befehl.


----------

