我和我的团队正在快速开发由Oracle DB支持的Webapp。我们使用maven的插件flyway来管理我们的数据库创建和INSERT SQL脚本的填充。通常,我们每个sprint添加3-4个表和/或修改现有的表结构。
我们在外部工具中对模式进行建模,该工具生成包含约束的模式,然后首先运行它,然后运行SQL INSERT以确保所有数据的完整性。
我们花费太多时间来管理SQL的更改以覆盖新表 - 我的意思是将额外的列数据添加到现有的SQL INSERT语句中,更不用说手动创建新的SQL INSERT数据了,特别是当它们出现时引用外键。
当然还有另一种方法,可能是在Excel中维护原始数据并将其通过解析器传递给数据库。有没有人有任何想法?
到目前为止10个表和最多1000个SQL语句,数据库不存在,所以我们在每次构建时将其删除。
由于
编辑:插入的数据是平台依赖于功能的静态参考数据 - 菜单等。 该体系结构是Tomcat,JSF,Spring,JPA,Oracle
答案 0 :(得分:4)
请将原始数据存储在数据库的表中 - 嘿!为什么你要在这个地方使用Excel呢?您拥有Oracle数据库 - 这项工作的最佳工具!
使用SQL * Loader或外部表将未经抛光的数据加载到数据库中的常规表中。 从那里你有SQL - 最强大的rdbms工具来操纵你的数据。 慢速插入永远不会慢。 (1000个sql语句)。请做CTAS。 在加载所有数据后添加/启用约束。
create table t as select * from raw_data;
or
insert into t (x,y,z) select x,y,z from raw_data;
使用此方法,您可以绕过SQL引擎并执行直接插入(直接路径加载)。这甚至可以并行完成,使您的数据进入数据库超快!
在SQL或PLSQL中执行所有数据操作。 (不在申请中)
祝你好运!
答案 1 :(得分:0)
或者,您也可以选择实现Java迁移。它可以读取你拥有的任何输入数据(Excel,csv,...)并进行适当的插入。