# CSV jdbc Treiber gesucht



## bin-doph (16. August 2007)

Hi, 

kann jemand einen Vernünftigen jdbc-Treiber für CSV-Dateien empfehlen? Ich habe schon ein paar ausprobiert, aber perfekt ist keiner und es fehlen überall features. Folgende hab' ich mir schon angeschaut und bin zu dem Schluss gekommen das sie alle nicht meine Anforderungen (lesen/schreiben, wenigstens SQL92)

http://forge.objectweb.org/project/showfiles.php?group_id=39
Bisher der Beste den ich gefunden habe unterstützt aber wirklich nur einfachste SQL-Syntax, kann nichtmal sortieren.

http://csvjdbc.sourceforge.net
read only...

http://sourceforge.net/projects/xlsql/
Macht prinzipiell einen zuversichtlichen Eindruck, aber der Link zu Dokumentation und Tutorials führt ins Nirvana, im bundle sind keine enthalten.

cheers


----------



## Thomas Darimont (16. August 2007)

Hallo,

unter Windows könntest du auch den standard Microsoft Text Driver über ODBC verwenden:

schau mal hier:

```
package de.tutorials;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class ReadCSVUsingMicrosoftTextDriverExample {
    public static void main(String[] args) throws Exception{
        Connection connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=C:/csv");
        
        Statement statement = connection.createStatement();
        
        ResultSet resultSet = statement.executeQuery("select * from bubu.csv order by c desc");
        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
        
        int columnCount = resultSetMetaData.getColumnCount();
        
        for(int i =1; i<=columnCount;i++){
            System.out.print(resultSetMetaData.getColumnName(i));
            System.out.print(" ");
        }
        System.out.println();
        System.out.println("------------------");
        
        while(resultSet.next()){
            for(int i = 1; i<= columnCount;i++){
                System.out.print(resultSet.getString(i));
                System.out.print(" ");
            }
            System.out.println();
        }
        
        resultSet.close();
        
        statement.close();
        
        connection.close();
    }
}
```

Im Verzeichnis c:/csv gibts eine bubu.csv

```
C:\csv>type bubu.csv
a;b;c
1;10;100
2;20;200
3;30;300
```

Ausgabe:

```
a b c 
------------------
3 30 300 
2 20 200 
1 10 100
```

Über ein Schema.ini File in dem c:/csv Verzeichnis kannst du das CSV Format genauer spezifizieren:
http://msdn2.microsoft.com/en-us/library/ms709353.aspx

Gruß Tom


----------



## bin-doph (16. August 2007)

Hi, 

danke für die Antwort, aber ODBC ist mir zu unflexibel, da ich selbst hauptsächlich auf Linux arbeite, die Anwendung Plattformunabhängig sein soll und unixodbc auch eine Qual ist, kommt das für mich nicht in Frage. Ich such schon irgendwie die eierlegende Wollmilchsau, aber es gibt so viele Projekte zu dem Thema und keins hat's so wirklich geschaft fertig zu werden oder hab ich noch eins übersehen?

grüsse


----------



## Thomas Darimont (16. August 2007)

Hallo,

schau mal hier:
http://rbytes.net/software/hxtt-text-jdbc-and-csv-jdbc-drivers-review/

Ansonsten könntest du ja die CSV Datei in eine in-Memory DB reinladen (Java DB bzw. Apache Derby oder HSQLDB)

Gruß Tom


----------



## bin-doph (16. August 2007)

Thomas Darimont hat gesagt.:


> schau mal hier:
> http://rbytes.net/software/hxtt-text-jdbc-and-csv-jdbc-drivers-review/



Zwei Aspekte daran die mich schon abschrecken:
Preis: 176,00 $
OS:    Windows 98/XP/Vista



			
				Thomas Darimont hat gesagt.:
			
		

> Ansonsten könntest du ja die CSV Datei in eine in-Memory DB reinladen (Java DB bzw. Apache Derby oder HSQLDB)



hmm, das klingt interessant für HSQL gibts auch schöne eclipse-plugins. Da werd ich mich mal reinlesen. Vielen Dank.

Grüßlichkeit


----------



## Der Heilige (28. September 2012)

Moin,
Kann mir jemand ein Beispiel geben wie man eine CSV Datei mit HSQL auslesen kann.
Würde mich sehr interessieren wie das geht.
Vielen Dank im voraus .
Gruß Der Heilige


----------

