Die Quelldateien eines BI-Systems können in unterschiedlichsten Formaten geliefert werden. Eines dieser Formate ist das Flatfile. Flatfiles haben eine festgelegte Zeichenkodierung („Codepage“), wie ANSI, Unicode usw. Um ein Flatfile per SSIS richtig zu importieren, muss der Verbindungs-Manager je nach Kodierung entsprechend konfiguriert werden.
Das folgende Beispiel zeigt eine TXT-Datei, in dem Texte mit Sonderzeichen und spezifischen Buchstaben unterschiedlicher Sprachen (z. B. Umlaute) enthalten sind.
Eine falsche Einstellung der Zeichenkodierung im Verbindungs-Manager führt dazu, dass Umlaute, wie „ä“, „ö“ oder „ß“ nicht richtig importiert werden.
Um dies zu verhindern, wird im Folgenden die Vorgehensweise zur Einstellung der richtigen Kodierung im Verbindungs-Manager dargestellt.
ANSI
ANSI ist die gängigste Zeichenkodierung von TXT-Dateien. Sie wird als Standardkodierung von Microsoft-Komponenten verwendet. Beim Erstellen einer neuen Flatfile-Verbindung stellt der Verbindungsmanager ANSI als Standard-Zeichenkodierung ein.
Für Dateien mit ANSI-Kodierung muss im Menüpunkt „Allgemein“ als Codepage „1252 (ANSI – Lateinisch I)“ ausgewählt werden.
Im Menüpunkt „Erweitert“ ist für jede Spalte der Datentyp (DataType) „string [DT_STR]“ oder für längere Texte „Textdatenstrom [DT_TEXT]“ auszuwählen. Diese Datentypen entsprechen den Typen „varchar()“ bzw. „text“ in T-SQL.
UNICODE
Bei der Zeichenkodierung „Unicode“ wird keine Codepage ausgewählt, sondern die Option „Unicode“ gesetzt.
Als DataType wählt man „Unicode-Zeichenfolge [DT_WSTR]“ oder für längere Texte „Unicode-Textdatenstrom [DT_NTEXT]“. Diese Datentypen entsprechen den Typen „nvarchar()“ bzw. „ntext“ in T-SQL.
DOS und UTF-8
Die Vorgehensweise für die Zeichenkodierungen „DOS“ und „UTF-8“ ist ähnlich, abgesehen von „Codepage“ und „DataType“. Die folgende Tabelle zeigt die jeweiligen Einstellungen:
Nicht unterstützte Zeichenkodierungen
Es gibt Zeichenkodierungen wie „UnicodeBigEndian“ bzw. „UTF-16 Big Endian“, die SSIS nicht unterstützt.
Um eine Datei mit solchen Zeichenkodierungen korrekt zu importieren, kann das Tool „Encoding File Task” verwendet werden. „Encoding File Task“ ist eine Open-Source-SSIS-Komponente, die die Kodierung einer Datei ändern kann. Die Komponente kann unter https://www.openhub.net/p/ssisencodefiletask heruntergeladen werden. Auf der Webseite findet man auch eine Dokumentation sowie eine Installationsanleitung. Diese Komponente ist derzeit nur für Visual Studio 2008 verfügbar.
Nachfolgend wird eine Datei im Format „UnicodeBigEndian“ mittels der Komponente „Encoding File Task“ importiert. Dazu werden die folgenden vier Schritte durchgeführt:
-
- Als erstes wird eine temporäre Kopie der Datei erstellt. Die Kopie Text_UnicodeBigEndianToANSI.txt wird verwendet, um die Kodierung zu konvertieren.
- Die Komponente „Encoding File Task“ benötigt den Pfad der Datei („Text_UnicodeBigEndianToANSI.txt“), die Originalkodierung („Unicode (Big-Endian)“) und die gewünschte Zielkodierung, hier z. B. ANSI („Windows-1252“).
- Nach der Ausführung der Komponente hat die Datei Text_UnicodeBigEndianToANSI.txt das Format ANSI und wird importiert.
- Als letzter Schritt wird die temporäre Datei gelöscht.
- Als erstes wird eine temporäre Kopie der Datei erstellt. Die Kopie Text_UnicodeBigEndianToANSI.txt wird verwendet, um die Kodierung zu konvertieren.
Bei der richtigen Einstellung der Zeichenkodierung, ist das Ergebnis des Imports wie folgt: