使用嵌入式 Java 数据库处理来自 Web 的 CSV 文件

Posted

技术标签:

【中文标题】使用嵌入式 Java 数据库处理来自 Web 的 CSV 文件【英文标题】:Processing CSV files from the Web using embedded Java database 【发布时间】:2008-12-20 12:24:26 【问题描述】:

短版:假设我不想长时间保留数据,如何在 HSQLDB 中以编程方式创建数据库并将一些 CSV 数据加载到其中?我的架构将与文件完全匹配,并且文件确实有足够的列名。

这是一个无人值守的过程。

详情:

我需要对通过 Web 下载的三个 CSV 文件应用一些简单的 SQL 技术,然后创建一些 DTO,然后我可以将其与一些现有代码一起使用以进一步处理它们,并通过 REST 保存它们。我真的不想搞乱数据库,但 CSV 文件是通过外键链接的,所以我正在考虑使用内存中的嵌入式数据库来完成这项工作,然后把所有东西都扔掉。

我想到了一个像这样工作的命令行应用程序:

    在 HSQLDB 中创建一个新的数据库。 在三个中启动三个 HTTP GET 使用 Apache HttpClient 的线程。 将 CSV 导入三个 HSQLDB MEMORY 表。 运行一些 SQL。 将结果解析到我现有的 DTO。 等等……

我可以使用对第 1 项和第 3 项有帮助的代码和实用程序的指针。还有我应该考虑的 HSQLDB 替代方案吗?

【问题讨论】:

【参考方案1】:

要使用的命令行应用程序是随 HSQLDB 提供的 SqlTool 实用程序 jar。您的程序可以完成如下:

    创建一个新的 HSQLDB 内存数据库(只需连接到内存数据库)。 使用 Apache HttpClient 启动三个 HTTP GET 以获取 CSV 文件。 创建三个 HSQLDB TEXT 表并将这些表的 SOURCE 设置为 CSV 运行一些 SQL。将结果解析为您现有的 DTO。

在提出问题时,无法在纯内存表中创建 TEXT 表。现在 HSQLDB 2.x 版本完全支持它。

【讨论】:

这是一个老问题,解决方案现在已经被编码并被遗忘了。我确实记得我所做的事情的大纲,这里只介绍了很少的内容。如果您在第 3 点上进行扩展,您的答案可能是更好的答案。这两个答案都可以使用一些关于引导正确助手等的细节来获得一次性的 Hibernate 会话(或类似会话)。 HSQLDB 指南中详细介绍了第 3 点。【参考方案2】:

检查opencvs。它可以帮助您解析 CSV 文件。

【讨论】:

以上是关于使用嵌入式 Java 数据库处理来自 Web 的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

本机应用程序与作为iframe嵌入的外部应用程序之间的会话处理

如何配置嵌入式 Jetty 以处理 OPTIONS 预检请求?

如何在 java 中使用 Smack XMPP 库处理 TLS 证书

如何在嵌入式 tomcat 服务器上部署 Spring Boot Web 应用程序,来自 Spring Boot 本身

什么是 Java servlet?Java Web 应用程序的请求处理

解析来自 .Net Web 服务的 JSON 响应