我正在构建一个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
答案 0 :(得分:3)
你有一张坐在桌子旁的有效城市名单吗?如果是这样,您可以使用查找转换。
如果城市位于名为city
在常规标签上选择无缓存
在连接标签选项卡上,选择city
表
在列标签选项卡上,将Branch Name
列与city
表格中的城市列相匹配
在高级标签中,勾选修改SQL语句并将结束更改为where [Branch Name] Like '%' + ? '%'
现在,您的查找将找到最接近的匹配项并将其作为额外列传递。
另一种方法是将它全部加载到临时表中并执行UPDATE
,同时使用LIKE
无论你做什么,都有助于在表格中列出有效城市
另一种方法是对数据中的标记进行假设,并在派生列转换中使用字符串函数将其解压缩,但是您可以得到一些意想不到的结果。
如果你愿意,我可以进一步扩展这些内容,但如果你永远不会回到这个问题,我也不会浪费时间。
答案 1 :(得分:1)
虽然您表示您不熟悉脚本组件 - 但它们是正确的工具。通过使用C#(或VB.Net)代码来操作字符串,您将获得更大的灵活性。网上有很多很好的教程,向您展示如何使用脚本任务,以及有关C#中字符串操作的大量信息。