Как разобрать действительно длинную текстовую строку в несколько значений строк в службах SSIS? - PullRequest
1 голос
/ 02 апреля 2019

У меня есть один плоский файл с одной строкой данных шириной около 1896 столбцов. Технически говоря, это тот же тип данных, который состоит из одной строки, а не из нескольких строк с CR / LF.

Мой вопрос: как мне сделать эту 1 строку разделенной на несколько строк? Пример данных выглядит следующим образом:

96859471/971 AAAA HAWAII               96860471/971 BBBB HAWAII               96861471/971 CCCC HAWAII               96863471/971 DDDD HAWAII               

1 Ответ

2 голосов
/ 02 апреля 2019

В SQL Server 2016 и более поздних версиях (по крайней мере, на уровне совместимости 130) вы можете использовать функцию STRING_SPLIT.

Функция разбивает строку на таблицу на основе разделителя между символами между записями.Поскольку у вас есть несколько пробелов между значениями, вам нужно REPLACE с одним символом.Я использовал вертикальную трубу, |, но вы можете выбрать что-то еще более неясное.

Кроме того, я использовал TRIM, чтобы отбросить конечные пробелы.

DECLARE @s NVARCHAR(MAX) = '96859471/971 AAAA HAWAII               96860471/971 BBBB HAWAII               96861471/971 CCCC HAWAII               96863471/971 DDDD HAWAII               '

SELECT @s = REPLACE(TRIM(@s),'               ','|')

SELECT value FROM STRING_SPLIT(@s,'|');

Результаты:

+--------------------------+
|          value           |
+--------------------------+
| 96859471/971 AAAA HAWAII |
| 96860471/971 BBBB HAWAII |
| 96861471/971 CCCC HAWAII |
| 96863471/971 DDDD HAWAII |
+--------------------------+

Вы должны иметь возможность инкапсулировать это в задачу «Выполнение SQL», а затем вернуть ее в переменную объекта или напрямую поместить в таблицу.Независимо от ваших требований.

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