#ssis #patindex
#ssis #patindex
Вопрос:
У меня есть пакет SSIS, который копирует данные из текстового файла в таблицу в sql server.
Я использую 3 задачи для одного и того же: 1) Исходный плоский файл, 2) Задача производного столбца, 3) задача назначения SQL
В 3-й задаче .. я указываю таблицу …, в которую я должен скопировать данные.
В этой целевой таблице .. есть столбец DESC .. и он имеет тип varchar … и плоский файл содержит данные для этого столбца следующим образом: — «01 planA» .. «04 plan C», «PlanJ».
Мне нужно удалить эти цифры с префиксами. У меня есть запрос, как показано ниже .. но я могу использовать это в производном столбце task..as SSIS не будет поддерживать PATINDEX.
SUBSTRING([DESC], PATINDEX('%[a-zA-Z]%',[DESC]), LEN([DESC])- PATINDEX('%[a-zA-Z]%',[DESC]) 1)
Пожалуйста, помогите мне.
Ответ №1:
Вы могли бы сделать это в задаче скрипта, используя регулярные выражения. Вам нужно будет обратиться к System.Text.RegularExpressions, затем использовать объект регулярных выражений .NET для имитации приведенного выше кода в методе Input0_ProcessInputRow.
В качестве альтернативы, сначала отправьте необработанные данные в промежуточную таблицу SQL и извлеките их оттуда с помощью PATINDEX, как в вашем примере, затем отправьте очищенную версию в таблицу назначения.
Комментарии:
1. что вы подразумеваете под промежуточной таблицей? Могу ли я иметь таблицу temperory в SSIS?