4 Stimmen

Wie verarbeitet man zerlumpte rechte Textdateien mit vielen unterdrückten Spalten in SSIS oder einem anderen Tool?

Die Option "ragged right flat file" ist großartig für ein einzelnes nachlaufendes Feld, das mit einem CRLF abgeschlossen wird, aber wenn eine beliebige Anzahl von nachlaufenden Feldern, die leer sind, unterdrückt und die Zeile vorzeitig mit CRLF abgeschlossen wird, habe ich in SSIS keine andere Möglichkeit gefunden, als ein paar Spalten mit einer einzigen "REMAINDER"-Spalte einzulesen und dann eine abgeleitete Spaltentransformation mit SUBSTRING-Operationen zu verwenden, um die "optionalen" Spalten einzeln zu extrahieren.

Eine Möglichkeit, die mir in den Sinn gekommen ist, ist, ob es eine Möglichkeit gibt, die Leitung durch eine "Padder"-Komponente innerhalb von SSIS zu leiten, bevor der Verbindungsmanager sie in die Hand bekommt. Dann könnte man alle Vorteile der Verwendung des Verbindungsmanagers zum Einrichten der eingehenden Spaltenlängen nutzen. Ich könnte immer ein externes Programm (oder einen völlig separaten SSIS-Datenfluss) erstellen, um eine Datei zu übergeben, die jede Zeile mit Leerzeichen auffüllen würde (und zwar mit ausgefranstem Recht - das Hinzufügen der gleichen Mindestanzahl von Leerzeichen, um alle unterdrückten Felder in jeder Zeile zu berücksichtigen, würde ausreichen), aber das scheint eine ziemliche Verschwendung von Festplattenspeicher zu sein und erfordert auch, dass die Datei ein weiteres Mal vollständig gelesen (und geschrieben) wird.

Vielleicht gibt es aber auch eine Datenquellenkomponente eines Drittanbieters, die bei einem vorzeitigen Abbruch der Zeile automatisch NULL oder leere Spalten erzeugt.

Gibt es noch andere Möglichkeiten?

2voto

Dave Swersky Punkte 34052

Ich denke, Ihr Lösungsvorschlag klingt vernünftig. Speicherplatz ist billig. Ein zweistufiger Prozess, bei dem Sie die Formatierung bereinigen, bevor Sie die Daten importieren, ist durchaus akzeptabel.

1voto

john Punkte 11

Verwenden Sie eine Skriptkomponente, um die Spalte als Datenquelle zu trennen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X