0

我和我的团队正在快速开发一个由 Oracle 数据库支持的 Web 应用程序。我们使用 maven 的插件 flyway 从 INSERT SQL 脚本管理我们的数据库创建和填充。通常我们会在每个 sprint 中添加 3-4 个表和/或修改现有的表结构。

我们在一个生成包含约束的模式的外部工具中对模式进行建模,并首先运行它,然后是 SQL INSERT,以确保所有数据的完整性。

我们花费了太多时间来管理对 SQL 的更改以覆盖新表 - 我的意思是向现有 SQL INSERT 语句添加额外的列数据,更不用说手动创建新的 SQL INSERT 数据,特别是当它们引用外国时钥匙。

当然还有另一种方法,也许在 Excel 中维护原始数据并通过解析器将其传递给数据库。有人有什么想法吗?

到目前为止有 10 个表和多达 1000 个 SQL 语句,DB 不是实时的,所以我们在每次构建时都将其拆除。

谢谢

编辑:插入的数据是平台依赖于功能的静态参考数据-菜单等。架构是Tomcat,JSF,Spring,JPA,Oracle

4

2 回答 2

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 中执行所有数据操作。(不在应用程序中)

  • 请花时间学习 Oracle 数据库。它有很多功能供您使用!
  • 不要像数据转储(存储数据的地方)一样使用它。创建包 - 应用程序的接口 - 数据库的 API。
  • 不要只是扔掉编译到您的应用程序中的数千条语句。它会变得一团糟。
  • 在数据库 PLSQL 中构建您的业务逻辑 - 使用您的应用程序进行演示。

祝你好运!

于 2014-02-26T23:18:36.047 回答
0

或者,您还可以选择实施 Java 迁移。它可以读取您拥有的任何输入数据(Excel、csv、...)并进行正确的插入。

于 2014-02-27T08:58:07.533 回答