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

Spring boot 用于动态文件的嵌入式H2数据库,spring-boot,h2,Spring Boot,H2,在我们的应用程序中,我们需要加载大型CSV文件并从中提取一些数据。例如,从CSV文件中获取不同的值。为此,我们决定使用内存中的DB,比如H2,因为不需要将数据存储在持久存储中。 但是,该文件是动态的,因此列可能不同。我需要将文件加载到H2数据库中的一个表中,该表是该会话的临时表。 技术堆栈是Spring boot和H2。 我在论坛上看到的例子是使用一个标准实体,它知道表中有哪些字段。但是,在我的情况下,表列将是动态的 我试过下面的弹簧靴 public interface ImportCSVRep

在我们的应用程序中,我们需要加载大型CSV文件并从中提取一些数据。例如,从CSV文件中获取不同的值。为此,我们决定使用内存中的DB,比如H2,因为不需要将数据存储在持久存储中。 但是,该文件是动态的,因此列可能不同。我需要将文件加载到H2数据库中的一个表中,该表是该会话的临时表。 技术堆栈是Spring boot和H2。 我在论坛上看到的例子是使用一个标准实体,它知道表中有哪些字段。但是,在我的情况下,表列将是动态的 我试过下面的弹簧靴

public interface ImportCSVRepository extends JpaRepository<Object, String> 
但这会导致非托管实体错误。我理解为什么会抛出错误。然而,我不知道如何做到这一点。另外,请澄清我是否应该使用Spring batch?

您可以使用手动创建表并查询/更新其中的数据


使用spring数据存储库和
@Entity
-ies,动态创建表和定义新实体(或修改现有实体)几乎是不可能的。您可能还应该检查一些NoSQL数据库,例如,使用动态结构定义文档(或键值对象)更容易。

您最好看看NoSQL数据库,例如MongoDB。RDMS不适合您描述的“动态结构”。
@Query(value = "CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');", nativeQuery = true)