用于动态文件的嵌入式 H2 数据库

Embeded H2 Database for dynamic files

在我们的应用程序中,我们需要加载大型 CSV 文件并从中获取一些数据。例如,从 CSV 文件中获取不同的值。为此,我们决定使用像 H2 这样的内存数据库,因为不需要将数据存储在持久性存储中。 但是,该文件是如此动态,以至于列可能不相同。我需要将文件加载到 H2 数据库到一个 table 是该会话的临时文件。 Tech Stack 是 Spring 引导和 H2。 我在论坛上看到的示例使用的是标准实体,该实体知道 table 具有哪些字段。但是我的情况是 table 列是动态的 我在 spring boot

中尝试了以下
public interface ImportCSVRepository extends JpaRepository<Object, String> 

@Query(value = "CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');", nativeQuery = true) 

但这给出了非托管实体错误。我明白为什么会抛出错误。但是我不确定如何实现这一目标。另外请说明我是否应该使用 Spring-batch ?

您可以使用 JdbcTemplate 手动创建表和 query/update 其中的数据。

An example of how to create a table with JdbcTemplate

使用 spring-数据存储库和 @Entity-ies 几乎不可能动态创建表和定义新实体(或修改现有实体)。您可能还应该检查一些 NoSQL 数据库,例如 MongoDb - it's easier to define documents (or key-value objects - Redis),其中包含动态结构。