Драйвер JDBC с открытым исходным кодом для Excel, файлы CSV в репозитории Maven

Есть ли драйвер JDBC для файлов Excel/CSV/XML с открытым исходным кодом, доступный в репозитории Maven? Механизм моста JDBC-ODBC очень громоздкий и плохо поддерживает DataSource (исключение «Дополнительная функция не реализована»). Возможность чтения/записи важна, но только чтение подойдет, если нет ничего лучше.


person Shantanu Kumar    schedule 02.01.2011    source источник
comment
Зачем использовать JDBC? Он довольно тяжелый и громоздкий для записи в файлы. Воспользуйтесь одним из приведенных ниже предложений, например OpenCSV, который обеспечивает более подходящий уровень абстракции.   -  person GaryF    schedule 02.01.2011


Ответы (2)


CsvJdbc — это драйвер базы данных Java для чтения файлов со значениями, разделенными запятыми.

http://csvjdbc.sourceforge.net/

Мейвен Репо:

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

Пример использования:

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();
    }
  }
}
person rekinyz    schedule 19.12.2014

OpenCSV

http://opencsv.sourceforge.net/

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

Читать

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...");
}

Написать

 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();
person Will    schedule 02.01.2011
comment
Хотя это отличный инструмент, на самом деле он не отвечает на вопрос, особенно когда речь идет о файлах Excel... - person Lukas Eder; 12.03.2013