清除SQL Server 2008中传入字符串字段的有效方法?

时间:2011-01-26 16:24:17

标签: sql sql-server-2008 ssis

我将数据从平面文件提取到SQL Server 2008表中。它包含我需要匹配的地址信息,所以我需要清理一些数据。

我创建了一个常用缩写/术语表及其官方美国邮局对应物,然后创建了一个函数,可以接受地址字符串并使用replace和缩写表中的数据返回已清理的地址字符串。

导入后在表上运行UPDATE并在地址字段上使用函数返回的字符串执行SET效果很好但速度很慢。我对SQL很新,有更好的方法吗?也许在SSIS导入之前它甚至被插入了?

2 个答案:

答案 0 :(得分:2)

您可以将其作为查找执行,也可以将数据放入临时表中,然后使用执行sql任务在登台表上进行清理,然后使用数据流导入到表中。出于几个原因,我更喜欢这样做。首先,我将数据流向两个表,一个清理,一个与文件具有数据完全一致。这样,我有一个未经编辑的数据,我可以查询的数据,我可以查询的数据的编辑版本和真实表格中的数据。这有助于我研究数据导入问题。我可以很容易地看出问题是由于我的清理或他们发送的东西或由于数据的存储方式(可能是pk / fk违规或某些需要它进入异常表的东西)(我也发送)如果无法导入异常表的所有记录)。此外,如果有错误而没有连续运行长时间复杂的耗时过程,我可以修复清理过程(并且直到我确定它已经没有进入实时表)一旦修复完成,通常我所要做的就是部署一个新版本的存储过程,而不是整个SSIS包。我发现这是能够研究和支持数据导入的最佳模型。他们改变了。

答案 1 :(得分:1)

听起来在这种情况下,在SSIS包中,您可以对常用术语表进行查找,连接地址,然后输出干净地址,然后将其传递到目标表。这会在加载后删除更新步骤。