Suchen...
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

SSIS-Codepages für Flatfiles

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.

Abb. 1 Textbeispiel mit Sonderzeichen und spezifischen Buchstaben

Eine falsche Einstellung der Zeichenkodierung im Verbindungs-Manager führt dazu, dass Umlaute, wie „ä“, „ö“ oder „ß“ nicht richtig importiert werden.

Abb. 2 Ergebnis bei falscher Zeichenkodierung

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.

Abb. 3 Auswahl der Codepage im Verbindungs-Manager

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.

Abb. 4 Angabe der Datentypen für jede Spalte

UNICODE

Bei der Zeichenkodierung „Unicode“ wird keine Codepage ausgewählt, sondern die Option „Unicode“ gesetzt.

Abb. 5 Setzen der Option „Unicode“

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 http://ssisencodefiletask.codeplex.com 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:

Abb. 6 Schritte für den Import im Format „UnicodeBigEndian“

    1. Als erstes wird eine temporäre Kopie der Datei erstellt. Die Kopie Text_UnicodeBigEndianToANSI.txt wird verwendet, um die Kodierung zu konvertieren.

      Abb. 7 Temporäre Kopie Text_UnicodeBigEndianToANSI.txt

    2. 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“).

      Abb. 8 Einstellungen für „Encoding File Task“

    3. Nach der Ausführung der Komponente hat die Datei Text_UnicodeBigEndianToANSI.txt das Format ANSI und wird importiert.
    4. Als letzter Schritt wird die temporäre Datei gelöscht.

Bei der richtigen Einstellung der Zeichenkodierung, ist das Ergebnis des Imports wie folgt:

Abb. 9 Ergebnis bei richtiger Zeichenkodierung