用于隔离字符串的SSIS表达式

时间:2014-11-11 22:32:08

标签: sql-server ssis

我正在构建一个SSIS包,它将Excel电子表格中的数据填充到我们的数据库报告中。

客户没有为City提供单独的列,不幸的是,客户无法更新其导出文件以添加城市,因此我尝试使用分支名称构建城市列。

我需要在派生列转换中使用SSIS表达式(或多个)来从分支名称中提取城市名称。我遇到的问题是名称的间距和位置不同。我试图使用令牌,子串和右和左与其他表达式结合,我似乎总是削减一些东西。

是否有其他人遇到此问题以及如何解决此问题。 (我不熟悉C#以使用脚本组件)。

以下是我拥有的数据示例。

Branch Name
JS OMAHA - 09
JS SIOUX FALLS - 48
JS DOWNINGTOWN - 53
JS ST PAUL - 70
JS BLOOMINGTON - 103
JS PITTSBURGH NORTH -149-
JS TINTON FALLS - 186
JS BLAINE - 337
JS ROCHESTER MN - 423

2 个答案:

答案 0 :(得分:3)

你有一张坐在桌子旁的有效城市名单吗?如果是这样,您可以使用查找转换。

如果城市位于名为city

的表格中,请说明您的列表

常规标签上选择无缓存

连接标签选项卡上,选择city

标签选项卡上,将Branch Name列与city表格中的城市列相匹配

高级标签中,勾选修改SQL语句并将结束更改为where [Branch Name] Like '%' + ? '%'

现在,您的查找将找到最接近的匹配项并将其作为额外列传递。

另一种方法是将它全部加载到临时表中并执行UPDATE,同时使用LIKE

无论你做什么,都有助于在表格中列出有效城市

另一种方法是对数据中的标记进行假设,并在派生列转换中使用字符串函数将其解压缩,但是您可以得到一些意想不到的结果。

如果你愿意,我可以进一步扩展这些内容,但如果你永远不会回到这个问题,我也不会浪费时间。

答案 1 :(得分:1)

虽然您表示您不熟悉脚本组件 - 但它们是正确的工具。通过使用C#(或VB.Net)代码来操作字符串,您将获得更大的灵活性。网上有很多很好的教程,向您展示如何使用脚本任务,以及有关C#中字符串操作的大量信息。