Spring Boot:在运行时更改数据库表

Posted

技术标签:

【中文标题】Spring Boot:在运行时更改数据库表【英文标题】:Spring Boot: Altering database tables at runtime 【发布时间】:2020-07-27 11:26:48 【问题描述】:

目前正在使用 Spring Boot 开发一个 Web 应用程序,用户需要上传带有联系人的 .CSV 文件来填充数据库。

每个 .CSV 文件(联系人列表)可能有一组不同的列(例如:姓名、电子邮件、地址等)。 每个列表可能包含数千条记录。 该应用程序涉及单独读取和写入每个列表。 该应用还必须提供列的插入/删除功能。

问题 1:将此类数据插入数据库的最佳方法是什么?

到目前为止,我能想到两个选择:

拥有一个包含所有列表中的所有数据的表。

为每个新列表创建一个新表。

问题 2:虽然第一个选项使用 Spring Boot 的 JPA + Hibernate 很容易实现,但我不确定如何处理第二个选项。由于字段因列表而异,因此我们无法提供资源表示类。有什么建议吗?

问题 3:拥有资源表示类并使用 Hibernate 是否甚至可以动态更改数据库表(插入/删除列)?

【问题讨论】:

为了给出好的反馈,写创建表。图片不够有用 【参考方案1】:

我认为您应该使用 MongoDB 作为数据库,因为它以 JSON 格式保存数据,记录字段可以不同 彼此之间,所以也许在你的情况下这是一个不错的选择。

【讨论】:

以上是关于Spring Boot:在运行时更改数据库表的主要内容,如果未能解决你的问题,请参考以下文章

spring boot java在运行时连接多个数据库并选择表

如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径

努力在运行时使用 Spring Boot 在数据库之间切换

spring-boot 在启动运行脚本中执行修改表结构

如何在运行时更改日志级别而不重新启动 Spring Boot 应用程序

如何使用 Spring Boot 应用程序和 Spock 测试在运行时更改服务器端口