CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

SSIS und der (performante) Umgang mit vielen kleinen Dateien

Wer mit den SQL Server Integration Services gearbeitet hat, stand sicher schon einmal vor der Aufgabe, mehrere gleichformatierte Dateien in eine Datenbank zu laden. Bisher wurde dazu immer (wahrscheinlich auch mangels Alternativen, Unwissenheit und der Tatsache, dass das benutze Verfahren ja ohne größere Probleme funktionierte) mit dem Foreach Loop Container gearbeitet. Dieser im SSIS integrierte Baustein lässt sich vielfältig anpassen und ist relativ schnell implementiert. Durch Zufall sind wir auf eine (einfachere und schnellere) Möglichkeit gestoßen, mehrere Dateien des gleichen Typs über SSIS zu laden: der Multiple Flat File Connection Manager. Und um diesen geht es im vorliegenden Blogbeitrag.

Abbildung 1: Connection Manager im SSIS

Der Dialog zur Konfiguration sieht nicht anders aus als der gewohnte Connection Manager für „ein-fache“ Flatfiles, aber hier ist es möglich, gleich mehrere Dateien anzugeben. Diese werden dann einfach durch das Pipe-Zeichen (|) getrennt.

Abbildung 2: Optionen im Multiple Flat File Connection Manager

Da die pipe-getrennte Schreibweise die Anzahl an Dateien fix vorgibt, ist dieser Ansatz relativ starr. Um es etwas dynamischer zu gestalten, kann im Pfad mit Wildcards gearbeitet werden. Um also alle Dateien in einem Verzeichnis, welche mit pmec.txt enden, zu laden, kann der Stern (*) verwendet werden.

Abbildung 3: Optionen im Multiple Flat File Connection Manager

Durch mehrere Tests haben wir herausgefunden, dass dieser Weg um ein Vielfaches(!) schneller ist, gerade bei vielen kleineren Dateien.