0

我有一个 SSIS 包,它将数据从文本文件复制到 sql server 中的表。

我对相同的任务使用 3 个任务 1)平面文件源 2)派生列任务,3)SQL 目标任务

在第三个任务中......我指定了表......我必须将数据复制到其中。

在那个目标表中..有一个 DESC 列..它的类型是 varchar ......并且平面文件包含该列的数据,如下所示:-“01 planA”..“04 plan C”,“PlanJ”。

我需要删除这些前缀数字。我有一个如下查询..但我可以在派生列任务中使用它..因为 SSIS 不支持 PATINDEX。

SUBSTRING([DESC], PATINDEX('%[a-zA-Z]%',[DESC]), LEN([DESC])- PATINDEX('%[a-zA-Z]%',[DESC])+1)

请帮我。

4

1 回答 1

1

您可以使用正则表达式在脚本任务中执行此操作。您需要引用 System.Text.RegularExpressions 然后使用 .NET Regex 对象在 Input0_ProcessInputRow 方法中模仿上面的代码。

或者,首先将原始数据发送到 SQL 暂存表并使用 PATINDEX 从那里提取,如您的示例中所示,然后将清理后的版本推送到您的目标表。

于 2011-04-11T20:50:15.880 回答