2011-01-02 3 views
1

Gibt es einen Open-Source-Excel/CSV/XML-Dateien JDBC-Treiber für ein Maven-Repository? Der JDBC-ODBC-Bridge-Mechanismus ist sehr umständlich und unterstützt DataSource nicht gut (optionale Funktion nicht implementiert Ausnahme). Lesen/Schreiben ist wichtig, aber nur lesen, wenn es nichts Besseres gibt.Open-Source-JDBC-Treiber für Excel, CSV-Dateien auf einem Maven Repo

+1

Warum JDBC verwenden? Es ist ziemlich schwer und umständlich für das Schreiben in Dateien. Gehen Sie mit einem der folgenden Vorschläge wie OpenCSV, die eine angemessenere Abstraktionsebene bietet. – GaryF

Antwort

-1

OpenCSV

http://opencsv.sourceforge.net/

<dependency> 
    <groupId>net.sf.opencsv</groupId> 
    <artifactId>opencsv</artifactId> 
    <version>2.0</version> 
</dependency> 

lesen

CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); 
String [] nextLine; 
while ((nextLine = reader.readNext()) != null) { 
    // nextLine[] is an array of values from the line 
    System.out.println(nextLine[0] + nextLine[1] + "etc..."); 
} 

schreiben

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t'); 
// feed in your array (or convert your data to an array) 
String[] entries = "first#second#third".split("#"); 
writer.writeNext(entries); 
writer.close(); 
+0

Das ist zwar ein ausgezeichnetes Werkzeug, aber es beantwortet nicht wirklich die Frage, insbesondere wenn es sich um Excel-Dateien handelt ... –

1

CsvJdbc ist ein Java-Datenbanktreiber zum Lesen von Dateien mit kommagetrennten Werten.

http://csvjdbc.sourceforge.net/

Maven Repo:

<dependency> 
    <groupId>net.sourceforge.csvjdbc</groupId> 
    <artifactId>csvjdbc</artifactId> 
    <version>1.0.9</version> 
</dependency> 

Verwendungsbeispiel:

import java.sql.*; 

public class DemoDriver 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
     // Load the driver. 
     Class.forName("org.relique.jdbc.csv.CsvDriver"); 

     // Create a connection. The first command line parameter is 
     // the directory containing the .csv files. 
     // A single connection is thread-safe for use by several threads. 
     Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + args[0]); 

     // Create a Statement object to execute the query with. 
     // A Statement is not thread-safe. 
     Statement stmt = conn.createStatement(); 

     // Select the ID and NAME columns from sample.csv 
     ResultSet results = stmt.executeQuery("SELECT ID,NAME FROM sample"); 

     // Dump out the results to a CSV file with the same format 
     // using CsvJdbc helper function 
     boolean append = true; 
     CsvDriver.writeToCsv(results, System.out, append); 

     // Clean up 
     conn.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 
}