Ein weit verbreiteter Irrglaube ist, dass man, um XML-Daten von einem Webservice zu holen, externe Programme benötigt. Doch Webservice-Daten können auch direkt über T-SQL ins Datawarehouse geladen werden.
Nicht nur mit SQL Server Integration Services (SSIS) können XML-Daten von einem Webservice in das Datawarehouse importiert werden. Es besteht auch die Möglichkeit, XML direkt im T-SQL zu verarbeiten. Diese Funktionalität umfasst die Kommunikation mit SOAP-Schnittstellen, REST-Webservices oder auch das Abrufen von einfachen XML-Dateien.
In dem nachfolgenden Beispiel werden aktuelle Wetterinformationen für eine beliebige Stadt von der OpenWeatherMap-API geladen:
-- Konfiguration um die aktuelle Temperatur für die Stadt, Land zu bekommen. declare @city nvarchar(200) = 'Bonn,de' -- Webservice URL declare @webservice as Varchar(8000) = 'http://api.openweathermap.org/data/2.5/weather?q='+@city+'&mode=xml'; declare @Object as Int; -- Temporäre variable um das Ergebnis des Webrequest zwischen zu speichern. declare @ResponseText as Varchar(8000); -- Konfiguration des Webservice Request Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; Exec sp_OAMethod @Object, 'open', NULL, 'get', @webservice, 'false' Exec sp_OAMethod @Object, 'send' Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT -- Zum Testen/Prüfen des Ergebnisses "Select @ResponseText" verwenden Select @ResponseText as WebserviceErgebnis -- Webservice Object aus dem Speicher freigeben. Exec sp_OADestroy @Object -- XML Variable zum auswerten erstellen declare @xml xml = CONVERT(XML, @ResponseText) -- Daten aus dem XML abrufen select @xml.value('(/current/city/@name)[1]', 'nvarchar(max)') as Stadt, @xml.value('(/current/temperature/@value)[1]', 'float')-273.15 as [Temperatur (in Celsius)] GO
Kategorien: SQL Server, Technical
Schlagwörter: Microsoft SQL Server, T-SQL
Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?
Nehmen Sie mit uns Kontakt auf!
Wir unterstützen Sie gerne bei Ihren Vorhaben!