IT

Schnittstelle von XML zu MS-SQL mit Powershell realisieren

Wenn verschiedene Branchen-Software-Lösungen zum Einsatz kommen, ist es eigentlich nur eine Frage der Zeit, bis für dieses und jenes eine Schnittstelle benötigt wird. Meist ist dies eine recht kostspielige Angelegenheit für eine vermeintlich einfache Sache, denn meist werden eigentlich nur Daten aus einer Datenbank über Umwege in eine andere geschrieben. Deshalb kann es nicht schaden, wenn man sich für Kleinigkeiten selbst zu helfen weiß. So lassen sich mit ein paar Minuten Arbeit unter Umständen 20.000€ oder mehr sparen 😉

 

Hier ist eine Beispiel-XML-Datei mit Lieferdaten. Die XML-Datei hat als Dateiname immer eine Liefernummer und beinhaltet die Produktnummer und Liefermenge von ausgelieferten Produkten:

 

Die Test-Tabelle in der Datenbank verfügt über die 3 Spalten „Liefernummer“, „Produktnummer“ und „Liefermenge“. Mit folgender SQL-Abfrage kann man nun Daten in eine MSSQL-Datenbank importieren, die man zuvor mittels SELECT-Abfrage aus einer XML-Datei abfragt:

Da bei dieser manuellen Abfrage die Liefernummer nicht verfügbar ist, wurde diese zum Test in der SELECT-Abfrage auf ‚001‘ festgesetzt.

 

Mit folgendem PowerShell-Code wird für jede XML-Datei im Quellverzeichnis die Verbindung zur vorher festgelegten Datenbank geöffnet und mit Hilfe des Dateinamens und des Datei-Inhalts die Datenbank gefüllt:

 

Wenn die Datenbank z.B. täglich mit neuen Daten gefüttert werden muss, kann man das PowerShell-Skript einfach als Aufgabe über die Aufgabenplanung automatisch ausführen lassen 🙂

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert