SSIS Datenübertragung – SQL zu Excel File
In diesem Blog-Beitrag möchte ich aufzeigen, wie mit SQL Server Integration Services (SSIS) Daten von einer SQL Server-Datenbank in eine Excel-Tabelle exportiert werden können. Hiermit können Daten automatisiert ausgetauscht und weiterverarbeitet werden.
Dies ist insbesondere für den Austauch von tagesaktuellen Daten wie beispielsweise zu Umsätzen oder Lagerbestände entscheidend.
Im Folgenden wird ein SSIS Paket erstellt um Lagerbestände auszutauschen, so dass diese anschließend ausgewertet oder in andere Systeme integriert werden können.
1. Der erste Schritt besteht in der Erstellung eines SSIS-Pakets im Visual Studio.
2. Anschließend kann ein Datenflusstask über die Toolbox hinzugefügt werden, so dass Datenquelle und Datenziel definiert werden können.
3. Nach der Erstellung des Datenflusstasks kann in den Reiter für den Datenfluss gewechselt werden und über die Toolbox eine OLE DB-Quelle hinzugefügt werden.
Mit Doppelklick auf die OLE DB-Quelle kann der Quellen-Editor geöffnet werden. Hierbei wird ein OLE DB-Verbindungs-Manager sowie die Tabelle oder Sicht angegeben, aus der die Daten extrahiert werden sollen.
Für das Laden und die Übertragung ist die Einrichtung eines OLE DB-Verbindungs-Managers erforderlich. Im Beispiel wird eine Verbindung zum Datawarehouse unter Verwendung der Windows-Authentifizierung hergestellt.
4. Nach Definition der OLE DB-Quelle kann im nächsten Schritt wiederum über die Toolbox ein Excel-Ziel hinzugefügt werden. Die OLE DB-Quelle wird daraufhin über den Datenflusspfad für die Ausgabe mit dem Excel-Ziel verbunden.
Anschließend wird mit Doppelklick zur Bearbeitung des Excel-Ziels gewechselt und ein neuer Excel-Verbindungs-Manager erstellt.
Bei der Einrichtung des Excel-Verbindungs-Managers wird der Dateipfad und ggf. die Excel-Version angegeben. Wenn die Datei Spaltenüberschriften enthält kann zudem das entsprechende Flag aktiviert werden.
Im Ziel-Editor ist es zudem möglich, das Mapping zwischen Quell- und Ziel-Spalten zu überprüfen und anzupassen.
Mit dem bisherigen Datenflusstask ist es möglich eine Excel-Datei mit den Lagerbeständen zu erzeugen. Bei einer erneuten Ausführung des Projekts werden allerdings neue Daten an die bestehenden Daten angehängt.
Auf diese Weise würden doppelte Lagerbestände entstehen. Damit die Daten nicht angehängt, sondern die Excel-Datei ausschließlich die aktuellen Daten enthält, gibt es verschiedene Möglichkeiten. Eine einfache Möglichkeit ist die Excel-Datei neu zu erzeugen. Diese Möglichkeit wird im Folgenden beschrieben.
5. Hierfür wird vor dem Datenflusstask in der Ablaufsteuerung ein Dateisystem Task aus der Toolbox hinzugefügt.
Mit diesem Dateisystem Task wird die Excel-Datei bei jeder Ausführung des Pakets gelöscht, indem die Excel-Datei angegeben und die Operation Datei löschen ausgewählt wird.
6. Als nächstes wird ein SQL Task für die Erzeugung der Excel-Datei hinzugefügt.
Hierfür wird der Excel-Verbindungsmanager und das entsprechende SQL-Statement eingegeben. Das SQL-Statement kann zuvor aus dem Excel-Ziel kopiert werden, indem bei der Angabe der Excel-Tabelle auf die Schaltfläche neu geklickt wird. Daraufhin erscheint ein Fenster mit dem SQL-Statement. Dieses kann kopiert und im SQL-Task eingefügt werden.
Anschließend kann das Projekt ausgeführt und die Excel-Datei kann überprüft werden.
Indem ein Datenflusstask mit einer OLE DB-Quelle und einem Excel Ziel verwendet wird, können Daten in eine Excel Datei übertragen werden. Mit dem zusätzlichen File Dateisystem Task zum Löschen der Excel-Datei und dem SQL Task zum erneuten Anlegen, wird sichergestellt, dass die Datei bei jeder Ausführung alte Daten gelöscht und ausschließlich die neuen Dateien enthalten sind.