有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过JDBC在CSV文件上执行SQL

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

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

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

以下是我遇到的问题:

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

从我考虑/尝试的4件事来看,只有3件和4件在我看来是可行的。关于这些问题有什么建议,或者我可以用什么方式查询我的CSV文件

干杯


共 (3) 个答案

  1. # 1 楼答案

    也许有点晚了,抱歉

    我开发csvjdbc已经一年多了,几周后我就拥有了该项目的“管理员”权限,所以我能够发布我制作的最新版本。它满足了所有“我们”的需要(我们:我和我现在的同事们),我在整理bug时添加了一些东西

    现在看一看,然后再做决定。(web文档仍然需要审阅,为了更好地理解,请查看非常广泛的测试用例)

  2. # 2 楼答案

    如果SQL是预定义的且无法更改,那么最好的选择是将CSV加载到数据库中,并对其运行查询

    Apache Derby是一个可行的选项,MySQL也是如此,它甚至有一个CSV storage enginePostgreSQL

    您的SQL是否使用任何专有函数/扩展?如果是这样,那可能会限制你的选择

  3. # 3 楼答案

    我想是嵌入式数据库。如果您不关心额外的依赖关系,我建议您选择Javadb(内置于JavaAPI中的Derby)或H2