|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
Добрый день! Пытаюсь понять, как с HTTP запроса считать данные в Visual Studio (2016), используя пакет SSIS. Тоесть, если бы это было через WebSevice, то проблем бы не было (задача WebTask умееет сама парсить WSDL и читать его методы). А вот если запрос прямой, который отдает сразу XML. Как можно получить XML используя VS. Ссылка для примера, курсы валю ЦБ (выдает сразу XML). тут ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2022, 17:15 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
medoed, Script Task на С# (ну или VB.Net, если так уж хочется), в нем писать либо через HttpClient (если несколько разных запросов и асинхронность нужна), либо через HttpWebRequest. Туториалов в инете миллион, главное учтите, что вам нужен код для .Net Framework 4.5 скорее всего (возможно ниже, не помню точно от чего версия зависит). Из нового вам будет попадаться код под .Net Core, .Net 5 / 6, хотя особых отличий там вроде не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2022, 17:59 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
Ennor Tiegael, Спасибо за наводку. Я вот находил куски подсказок. Но пока не могу понять, тоесть этот компонент Script Task читает HTTP, а далее , в нём надо сохранять XML в файл или глобальную переменную или из него выводной поток можно куда то отдать, например компоненте работы с XML. Эххх, мне бы пример готовый, наверняка кто такое пилил. P.S. Жаль, что нет встроенных компонент HTTP request например в SSIS. Edit the Script Task At the top with the other using statements add using System.Net; in Main use the following code snippet to make a GET request (Note: Change "https://somewhere.com/contacts/get" to your actual endpoint.) HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://somewhere.com/contacts/get"); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using(Stream stream = response.GetResponseStream()) using(StreamReader reader = new StreamReader(stream)) { return reader.ReadToEnd(); } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2022, 18:09 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
medoed, Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных. В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2022, 22:38 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
Ennor Tiegael нужен код для .Net Framework 4.5 Для SQL 2016 возможно использовать любую версию (по умолчанию 4.5). Однако при миграции на следующие версии SQL Server версия .Net Framework будет принудительно фиксирована: для 2017 - только 4.5, для 2019 - только 4.7. Не знаю, что будет на линуксовой SSIS (цитата "Only supports standard .NET Framework APIs"), но это, вероятно, не ваш случай. По-хорошему, ответ XML надо распарсить в том же компоненте и отправить в табличном виде туда, где он нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2022, 23:28 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
Критик medoed, Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных. В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента. Вы не внимательно прочитали пост. WebService нет, есть прямая ссылка http - которая отдает xml. C WebService -проблем нет, в SSIS есть для парсинга WebS - специальная компонента. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2022, 10:02 |
|
SSIS и HTTP запрос
|
|||
---|---|---|---|
#18+
medoed Критик medoed, Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных. В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента. Вы не внимательно прочитали пост. WebService нет, есть прямая ссылка http - которая отдает xml. C WebService -проблем нет, в SSIS есть для парсинга WebS - специальная компонента. Я использовал Script Task в качестве dataflow source. В свойствах таска определяете столбцы для output dataflow, их типы, коллейшен и т.д. Внутри скрипта у вас появляется объект Output0Buffer, который вы заполняете своими данными, построчно. В редакторе датафлоу направляете ваш выхлоп в соотв. destination, мэппите столбцы как обычно, все. Начать стоит отсюда: https://docs.microsoft.com/en-us/sql/integration-services/extending-packages-scripting-data-flow-script-component-types/creating-a-source-with-the-script-component У меня просто не осталось того кода, который я писал 3 года назад. Я там использовал этот подход для выгрузки биллинговых данных из Ажура. Мне там кстати еще и постраничную вычитку пришлось делать, потому что ажур отдает не более 1000 записей в одном батче. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2022, 11:51 |
|
|
start [/forum/topic.php?fid=46&msg=40127608&tid=1683908]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 284ms |
0 / 0 |