我正在ms sql server中创建一个etl进程,我希望有特定于特定行的特定列的错误。例如,数据最初是从excel文件加载到一个表中(我们称之为初始表),其中所有列都是
varchar(2000)
然后将数据转移到另一个表(datatypedtable),该表包含更具体的数据类型(
datetime
,
int
等)或更严格限制的varchar长度。我需要能够为特定字段创建错误消息,例如:
“1月13日”不是提交日期的有效日期格式。请使用mm/dd/yyyy格式
这些错误消息需要以某种方式存储,以便在稍后的过程中,自动化进程可以创建包含错误消息的报告,以便每条消息引用特定的行和字段(有人需要返回并更正源系统中的数据,然后重新提交xcel文件)。因此,理想情况下,它将被插入到某种类型的失败表中,并包含失败行的主键、列名和错误消息。
问题:
所以我想知道这是否可以通过ssis或者像talend这样的开源工具来实现,如果可以,您的一般方法是什么?或者你会采取什么手工编码的方法?
我考虑过使用sql的两种方法(直到没有,我在sql过程中手工完成etl,但我想考虑其他方法)。可能为偶数:
使用光标读取初始表,对于每一行,在数据类型表中插入一个只有主键的空白记录,然后为每一列使用一个update语句,这样,如果更新失败,我可以在err中插入一个特定于该列的错误消息。或消息表。
将所有数据按原样插入到数据类型表中,但有重复的列,如
SubmissionDate
和
SubmissionDateOld
. 在初始插入之后,*old列有数据,其余为空,我对每一列都有一个更新,它基于submissiondateold设置submissiondate。
除了建议一种方法外,我想知道你是否正在使用这种方法或类似的方法。