java - 通过 JDBC 对 CSV 文件执行 SQL

标签 java sql text jdbc csv

我需要对 CSV 文件(以逗号分隔的文本文件)应用 SQL 查询。我的 SQL 是从另一个工具预定义的,不能更改。它可能在 FROM 部分包含嵌入式选择和表别名。

对于我的任务,我找到了两个提供 JDBC 驱动程序的开源(这是一个项目要求)库:

  1. CsvJdbc
  2. XlSQL
  3. JBoss Teiid
  4. 创建一个 Apache Derby 数据库,将所有 CSV 作为表加载并执行查询。

这些是我遇到的问题:

  1. 它不接受 SQL 的语法(它使用内部选择和表别名)。此外,自 2004 年以来就没有维护过。
  2. 我无法让它工作,因为它依赖于一个 SAX 解析器,在解析其他文档时会导致异常。同样,自 2004 年以来没有变化。
  3. 没有检查它是否支持语法,但似乎是一种开销。它需要几个实体定义(虚拟数据库、绑定(bind))。他们从邮件列表中告诉我,最新版本支持运行时创建所需的对象。有没有人用它来完成如此简单的任务(通常它可以连接到多种类型的数据,如 CSV、XML 或其他 DBS,并创建一个虚拟的、统一的数据)?
  4. 这甚至可以轻松完成吗?

在我考虑/尝试过的 4 件事中,我认为只有 3 和 4 是可行的。关于这些的任何建议,或者我可以查询我的 CSV 文件的任何其他方式?

干杯

最佳答案

我会将数据加载到 HSQL (HypersonicSQL) 中。纯 Java,正确的 SQL,久经考验。几乎所有其他事物的足迹都更大。

关于java - 通过 JDBC 对 CSV 文件执行 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468998/

相关文章:

SQL 服务器 : auto-generated custom format sequence number

C++ SFML 字体问题

image - 数学: Add text to imported image/graphic as a label

html - 具有悬停效果的按钮上的中心文本

java - java中如何通过socket获取HTTP响应?

java - 注入(inject)运行时值的更好方法

选择时的 MySQL CASE

java - 使用注释在 Hibernate 中使用复合主键

java - 带有 Apache Derby 的 JDBC 抛出 java.sql.SQLNonTransientConnectionException : No current connection

Java - 在 Windows 7 X32 中安装包 javax.media.jai