SSIS - 检查 OLE DB 源架构

Posted

技术标签:

【中文标题】SSIS - 检查 OLE DB 源架构【英文标题】:SSIS - Check OLE DB source schema 【发布时间】:2016-12-14 19:38:10 【问题描述】:

我有一个 ETL 项目,我需要从文件夹中的一些 50K Access .MDB 数据库加载数据到 sql server。这些 50K 数据库文件的问题在于它们具有不同的架构,我需要 ETL 流程来识别差异并正确响应。

例如,在某些 .MDB 文件中,有表 A、B 和 C。但是在其他一些表中,只有表 A 和 B(与其他表相比,表 A 和 B 相同,只是表 C不见了)。我需要检查每个OLE DB源,看看有哪些表来实现IF表A存在,加载表A等逻辑,否则,绕过加载。

我已经完成了我的谷歌搜索和搜索,但我能找到的所有错误处理或检查方法都是用于执行 SQL 任务或数据转换任务。因此,如果有人能对我上述案例的解决方案有所了解,我将不胜感激。

谢谢。

【问题讨论】:

这听起来像是 BIML 的工作。 BIML 让您可以根据元数据动态构建包 【参考方案1】:

简而言之 - SSIS 假定元数据不会改变。 但是,通过一些技巧,可以减少这种限制;以下是建议的技巧列表:

    测试是否存在特定表(参见此处的示例How to use SQL to query the metadata in Microsoft Office Access? Like SQL Server's sys.tables, sys.columns etc)并根据结果 - 有条件地执行以下任务。 对 MS Access 表的所有 SQL 请求都应将 DelayValidation 属性设置为 True。原因 - 将 SQL 命令验证从包开始推迟到特定任务执行。一些任务(对于缺失的表)将不会被执行;因此,它不会被验证,也不会引发验证错误。

【讨论】:

以上是关于SSIS - 检查 OLE DB 源架构的主要内容,如果未能解决你的问题,请参考以下文章

SSIS - 将 Fact 与查找表匹配两次时重用 Ole DB 源

在 SSIS 2012 的 OLE DB 源中使用动态 SQL

SSIS - 如何从平面文件插入到具有日期范围的OLE DB?

SSIS:无法创建OLE DB访问器。验证列元数据是否有效

SSIS - OLE DB 目标 - 表或视图加载与快速加载

将参数传递给 OLE DB SOURCE