嵌入H2数据库以获取动态文件

时间:2019-11-12 13:19:59

标签: spring-boot h2

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

public interface ImportCSVRepository extends JpaRepository<Object, String> 

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

但这会导致非托管实体错误。我了解为什么会引发错误。但是我不确定如何实现这一目标。还请澄清我是否应该使用Spring-batch?

1 个答案:

答案 0 :(得分:0)

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

An example of how to create a table with JdbcTemplate

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