我有一个SSIS包,它将数据从文本文件复制到sql server中的表。
我使用3个任务相同1)平面文件源2)派生列任务,3)SQL目标任务
在第三个任务中,我指定了要复制数据的表。
在目标表中,有一个列DESC,它的类型是varchar…和平面文件包含该列的数据如下:- "01 planA".."计划C","计划j"。
我需要删除这些前缀数字。我有一个如下的查询,但我可以在派生列任务中使用它,因为SSIS不支持PATINDEX。
SUBSTRING([DESC], PATINDEX('%[a-zA-Z]%',[DESC]), LEN([DESC])- PATINDEX('%[a-zA-Z]%',[DESC])+1)
请帮帮我。
您可以在脚本任务中使用正则表达式执行此操作。你需要引用system . text . regulareexpressions,然后使用. net Regex对象在Input0_ProcessInputRow方法中模拟上面的代码。
或者,首先将原始数据发送到SQL staging表,并像示例中那样使用PATINDEX从那里提取数据,然后将清理后的版本推送到目标表。