Split Cell с использованием SSIS - PullRequest
0 голосов
/ 13 октября 2011

Я хочу использовать SSIS для преобразования данных, хранящихся в одной исходной таблице.В одной из ячеек есть строка символов.Например:

##/\/\/\/\/\##HHHHHHBBBB##/\/\/\/\/\

В той же строке есть еще одна ячейка с датой.

В основном я хочу, чтобы каждый символ в этой строке был перенесен в новую таблицу в виде строкисамостоятельно.Первые два символа представляют дату, указанную в другой ячейке.Следующие два символа представляют следующий день и так далее.Поэтому, помимо того, что у каждого символа есть свой собственный символ, я также хотел бы увеличить данные и сохранить их тоже.

Любая идея, как мне поступить, или даже если SSIS является правильным инструментом для использования.

Большое спасибо

1 Ответ

0 голосов
/ 13 октября 2011

Интересно, лучше ли вам сначала запустить это через функцию с разделенными строками в SQL?Таким образом, вы будете получать строки для каждого символа рядом с датой, а затем вы сможете просто вывести его прямо к месту назначения.

Я создал функцию для облегчения этого:

CREATE FUNCTION [dbo].[udf_SplitStringIntoRows](@text varchar(max))
    RETURNS @tbl TABLE ([value] char(1) NOT NULL)
AS
BEGIN

    WHILE len(@text) > 0
    BEGIN
        INSERT INTO @tbl
        SELECT left(@text,1)

        SET @text = RIGHT(@text,len(@text)-1)

    END

    RETURN
END

Затем, чтобы проверить данные, я создал таблицу временных температур с вашими данными в:

DECLARE @source as TABLE([value] varchar(max), [date] datetime)

INSERT INTO @source
SELECT '##/\/\/\/\/\##HHHHHHBBBB##/\/\/\/\/\', getdate()
UNION
SELECT '##/\/\/\/\/\##HHHHHHBBBB##/\/\/\/\/\', getdate()+1
UNION
SELECT '##/\/\/\/\/\##HHHHHHBBBB##/\/\/\/\/\', getdate()+2

Затем перекрестно применил функцию к этому набору данных:

SELECT d.[value], s.date
FROM @source s
CROSS APPLY dbo.[udf_SplitStringIntoRows](s.value) d

Что должнопредоставит вам исходный набор данных, необходимый для дальнейшей обработки в SSIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...