# Einlesen einer csv-Datei in eine H2-Datenbank



## Alex_winf01 (24. Dez 2007)

Hallo liebe Forengemeinde,

zunächst ein frohes Weihnachtsfest.

Ich hänge über folgendes Problem:

Ich habe ca. 12.000 Datensätze in einer csv-Datei namens test.csv vorliegen. In der Doku von H2 steht, man kann sich die Daten mithilfe von 
	
	
	
	





```
select * from csvread('test.csv')
```
 anzeigen lassen kann. Nun möchte ich diese Datensätze aber mir nicht nur anzeigen lassen, sondern in eine bereits vorliegende Tabelle einfügen. Ich habe es wie folgt versucht:


```
insert into test values(select * from csvread('test.csv'))
```

Ich bekomme da die Fehlermeldung, dass die Anzahl der Spalten nicht übereinstimmt. In der vorliegenden Tabelle befinden sich 2 Spalten, in der csv-Datei sind auch 2 Spalten.

Hat jemand einen super Einfall?


----------



## Guest (25. Dez 2007)

Du kannst eine Liste von Insert-Statements generieren und diese dann ausführen.
z.B.
	
	
	
	





```
SELECT 'INSERT INTO test VALUES(' || ID || ',''' || NAME || ''')' FROM CSVREAD('test.csv')
```


----------



## Guest (25. Dez 2007)

Übrigens, man kann das auch auf die Spitze treiben und die Statements in eine Datei generieren lassen.
	
	
	
	





```
CALL CSVWRITE('test.ddl', 'SELECT ''INSERT INTO test (ID, NAME) VALUES('' || ID || '','''''' || NAME || '''''');'' FROM CSVREAD(''test.csv'')','ISO-8859-1',',','')
```
Danach die erste Zeile aus test.ddl entfernen und das ganze mit runscript ausführen
	
	
	
	





```
RUNSCRIPT FROM 'test.ddl'
```


----------



## Alex_winf01 (25. Dez 2007)

@ Gast

Danke für Deine Antwort. So funzt das einwandfrei. Danke. Und noch einen schönen 2. Weihnachtsfeiertag. :toll:


----------

