数据库问题

时间:2012-11-04 19:26:39

标签: database database-design

我在Oracle数据库中有一个数据库模式。我也有来自第三方供应商的数据转储。我在Linux机器上使用sql loader脚本加载数据。

我们每天都有批量更新。

假设数据没有数据错误。例如。如果在第一天将数据“A”插入到数据库中,并且在进一步加载(假设)中不会出现数据“A”。如果我们得到一个名为'A'的数据,那么我们就会遇到主键违规。

问题:为了避免这些违规行为,我们应该构建一个分析器来分析数据错误,或者是否有更好的解决方案。

1 个答案:

答案 0 :(得分:2)

我为一家公司建立了一个ETL系统,该公司每天都有包含业务线交易数据的平面文件。数据假设遵循文档化的模式,但实际上每天都有许多不同类型的违规,并且文件到文件。

我们构建了包含所有可空列的SQL登台表,这些列大于应该需要的varchars,并使用高效的批量加载实用程序将平面文件数据加载到这些登台表中。然后,我们在数据库的上下文中运行了一系列数据一致性检查,以确保原始(暂存)数据可以交叉加载到正确的生产表。

在通过所有编辑之前,没有任何东西退出临时表环境。

将平面文件加载到登台表的优点是,您可以利用RDBMS执行设置操作,并轻松地将新值与先前文件中的现有值进行比较,而无需构建特殊的平面文件处理代码。