我创建的MS SQL Server中的ETL过程,我想有专用于特定行的特定列的错误。例如,数据最初从Excel文件加载到一个表(我们称之为初始表),其中所有列varchar(2000),然后我的数据阶段包含更具体的数据类型另一个表(DataTypedTable)(datetimeint等)或更严格的限制VARCHAR长度。我需要能够为特定的领域,如创建错误信息: “1月13日”不为提交日期的有效日期格式。请使用MM / DD / YYYY的格式

这些错误信息需要被存储在某种方式,从而在后面的过程自动化过程可以创建一个错误信息,使得每个消息都涉及一个特定的行和实地考察报告(有人会需要回去和纠正在源系统中的数据,并重新提交Excel文件)。因此理想地将它插入到某种类型的故障表和包含故障行的主键,列名,和错误消息。

问:所以,我想知道这是否可以使用SSIS来完成,或像拓蓝一些开源工具,如果是这样,这将是你的一般方法?或者,你会采取什么样的编码方式的手?

夫妻办法,我想用SQL的(直到没有我在SQL特效做ETL手,但我要考虑其他的方法可能C#连。):

使用一个光标通过初始表中读取,并且对每行中插入一个空记录只与主钥匙插入DataTyped表,则使用单个更新语句对于每一列,使得如果该更新失败我可以插入特定于错误消息表列中的非常具体的错误消息。

插入所有的数据原样进入DataTyped表,但有像SubmissionDateSubmissionDateOld重复列。初始插入件*旧列具有数据后,其余都是空白的,以及我对,其基于所述SubmissionDateOld的SubmissionDate每一列的单个更新。

除了暗示的方法,我想知道,如果你正在使用的方法或你做的工作已经类似的东西。

有帮助吗?

解决方案

我使用这里我把一个条件分割成数据流中的形式给出。然后失败的情况(无效的日期,在所需字段中没有数据等)记录被发送到一个异常表,它包括该记录标识符,坏数据,它失败的原因。然后,您可以稍后从这些信息创建错误的电子表格或文本文件传送回提供该文件的组。当然好记录转到pther路径和被插入到表中。

其他提示

如何加载到分级(你叫什么初始表)表之前一些清洁/转型?从Excel中的数据转储到制表或逗号分隔的文件,然后使用您所选择的一些编程语言要做到这一点,你已经注意到了数据清理。此外,有多大的每个数据负荷?您可以使用多线程或者多进程应用程序的处理主要载荷(如一次装入几百万行)。在这个过程中,你遇到的任何错误可以加载到与标识,错误和注释细节异常表。这种技术有助于具有在数据清洗阶段更好的控制。

如果负荷不高,你想要做的大部分工作在数据库(SQL),那么你可能需要做大量的数据分析可能和有你可能会遇到的数据变化的良好understading。这样,您可以使用适当的分量(拓蓝或SSIS)做变换或控制数据流。此外,通过使用正则表达式,你可以赶上,从设置规则的偏离的任何实体。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top