Ich frage mich, ob es ein Tool (oder eine spezielle Technik) gibt, mit dem jemand Flatfiles mit fester Breite in SSIS-Flatfile-Verbindungsmanagern zugeordnet hat.
Normalerweise verwende ich einfach den Flat File Connection Manager-Editor (Registerkarte Erweitert) und füge die Spalteninformationen (Name, Breite, Datentyp usw.) für alle Spalten 1 zu 1 hinzu.
Das hat in der Vergangenheit gut funktioniert, aber jetzt muss ich eine Datei mit fester Breite zuordnen, die fast 500 Spalten enthält ...
Ich denke (in der Hoffnung), dass es ein Werkzeug oder eine Technik geben sollte, mit der ich das Mapping stromlinienförmiger durchführen kann ...
Mit dem Datenwörterbuch, das mir für die Datei zur Verfügung gestellt wurde, konnte ich problemlos ein Excel- (oder Text-) Dokument erstellen, beispielsweise mit einigen Spalten, die die erforderlichen Informationen enthalten, die SSIS benötigt (Spaltenname, Trennzeichen, InputColumnWidth, OutpuColumnWidth, DataType), um die Datei zuzuordnen .
Ich frage mich, ob es ein SSIS-Tool oder eine SSIS-Komponente gibt, die diese Datei lesen und automatisch die Zuordnungen im Flat File Connection Manager für mich erstellen kann ...
Wenn es kein solches Tool gibt, hat jemand Tricks oder Tipps, mit denen ich die Datei möglicherweise am effizientesten zuordnen kann?
Ich frage mich, ob ich die XML-Datei des SSIS-Pakets möglicherweise so ändern kann, dass ich einfach Code erstellen kann, der die Spalteninformationen für alle Spalten im XML-Format ausgibt, und sie dann einfach manuell kopieren und in die XML-Datei des Pakets einfügen kann Datei ... nicht sicher, ob dies funktionieren würde ....
Hinweis: Nach dem Zuordnen der Datei in SSIS wird sie in eine SQL Server-Tabelle geladen
quelle
Antworten:
Zwei Optionen in den Sinn kommen, sind beide Merkmale der can not Say-genug-good-Dinge-über-das-Free-Tool Helper BIDS .
Spalten mit fester Breite erstellen
Die erste ist die Funktion Spalten mit fester Breite erstellen . Es ist so einfach wie Erstellen eines Flat File Managers, der auf die richtige Datei zeigt und 1 Spalte definiert.
Sobald dies erledigt ist, klicken Sie mit der rechten Maustaste zurück auf den Verbindungsmanager und verwenden die kontextsensitive Funktion "Spalten mit fester Breite erstellen ...".
Im nächsten Fenster fügen Sie die tabulatorgetrennte Liste (Excel) in den Editor ein
Oh ja, das ist einfach. Wenn Sie für Spaltentypen und dergleichen einige Anpassungen vornehmen müssen, ändern Sie diese wie gewohnt mit Bearbeiten.
Biml
Ich mag die Business Intelligence Markup Language für meine SSIS-Entwicklung. Es hat viele Vorteile, aber im Grunde genommen sollten Sie es für Dinge wie gottesfürchtige Flatfiles verwenden, insbesondere wenn sie keine Header-Zeilen enthalten (ich sehe Sie an, Sie Mainframes).
Es war oft meine Erfahrung im Umgang mit Legacy-Systemen, dass sie ihre Dateidefinitionen in COBOL-Copybooks haben. Diese Entwickler senden mir Excel-Dateien mit dem Spaltenlayout wie
Es ist nichts Besonderes, aber Excel-Formeln haben es kurz gemacht. Also würde ich 4 neue Spalten basierend auf den oben genannten erstellen.
Bereinigter Name (ungültige Zeichen für Spaltennamen entfernt)
Länge (extrahiert die Zahlen, beachten Sie, dass dies immer noch eine führende 0 hat, aber es tut nicht weh)
XML (dies erstellt das tatsächliche XML für eine Flatfile-Definition)
DDL (Könnte auch die Zieltabelle erstellen, während ich dabei bin)
In der ersten Spalte der DDL wird das Bleikomma gelöscht und dann umbrochen
CREATE TABLE dbo.FOO()
Letztendlich führt dieses XML zu etwas, das in ein
FlatFileFormat
Tag geklatscht wird, und dann ist es einfach, die Connections-Sammlung und schließlich das Paket selbst zu erstellen. Sieht viel aus, ist aber eigentlich ziemlich einfach, sobald Sie ein Muster haben.Oh und eine ähnliche Frage von SO mit einer beunruhigend ähnlichen Antwort. Ich wünschte, ich hätte mir Skinners Kommentare angesehen, bevor ich diese Antwort umschrieb.
quelle