Wie eine flache Datei mit verschiedenen Zeilen mit SSIS exportieren?

StackOverflow https://stackoverflow.com/questions/213411

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe Baum Tabellen, Kunde, Rechnung und InvoiceRow mit den Standard-Beziehungen.

Dies habe ich in einer festen Feldlänge Datei mit den ersten zwei Zeichen jeder Zeile exportieren, den Zeilentyp zu identifizieren. Die Zeilentypen haben unterschiedliche Spezifikationen.

Ich konnte es wahrscheinlich mit einer verschachtelten Schleife in einem Skriptblock, aber das ist mein erstes SSIS-Paket und die Lösung fühlt sich falsch an.

edit:

Der Ausgang muss haben:

Customer  
Invoice  
Rows  
Customer  
Invoice  
Rows  
and so on
War es hilfreich?

Lösung

Ihr Bauchgefühl dies mit einer Script-Zielkomponente auf tun, ist richtig. Leider ist dieses Szenario nicht gut mit SSIS Jive. Ich halte dies nicht für ein Anfänger-Paket. Wenn Sie SSIS verwenden müssen, dann würde ich durch innere beginnen alle Daten verbinden, so gibt es eine Zeile für jede InvoiceRow ist, die Daten enthalten, aus allen drei Tabellen benötigt werden.

CustomerCols, InvoiceCols, RowCols

Dann wird in dem Skript Zielkomponente benötigen Sie den Überblick über die Kunden- und Rechnungswerte zu halten, da sie die Sie benötigen, um zusätzliche Zeilen in die Ausgabe schreiben ändern werden.

Siehe Erstellen eines Ziels mit der Skriptkomponente für weitere Informationen auf Skript Ziel.

Meine Erfahrung zeigt, dass Skript Destinationen gute Leistung haben können.

Andere Tipps

würde ich Script Destination Schreiben vermeiden, und verwenden Sie nur Script Flat File Ziel Trans +. Auf diese Weise, konzentrieren Sie sich auf die logische Ausgabe (Strings von Daten), während es SSIS eigentliche Schreiben in die Datei zu tun (es könnte etwas effizienter sein, und Sie konzentrieren sich auf Ihr Geschäft, nicht auf das Schreiben von Dateien).

Zuerst müssen Sie denormalisierter Daten zu erhalten. Sie können in der DBMS verbindet und Sorten tun, aber wenn Sie wollen, zu viel Druck nicht auf DBMS setzen -. Nur sortierten Daten aus ihm heraus und führen Sie sie mit zwei SSIS Merge Transformationen Join

Sie dann das Skript aus: halten Werte der aktuellen Kunden- und Rechnungs ausgeführt wird, geben sie, wenn sie sich ändern, Ausgabe InvoiceRow an jedem Eingang. So etwas wie folgt aus:

if (this.CustomerID != InputBuffer.CustomerID) {
  this.CustomerID = InputBuffer.CustomerID;
  OutputBuffer.AddRow();
  OutputBuffer.OutputColumn = "Customer: " + InputBuffer.CustomerID + " " + InputBuffer.CustomerName;
}
// repeat the same code for Invoice

OutputBuffer.AddRow();
OutputBuffer.OutputColumn = "InvoiceRow: " + InputBuffer.InvoiceRowPrice;

Schließlich fügen Sie eine Flat File Ziel mit einer einzigen Spalte (OutputColumn vom Skript erstellt) zu schreiben, diese in die Datei.

Verarbeiten Sie Ihre drei Tabellen, so dass die Ausgänge alle geeigneten für Ihre Ausgabedatei (einschließlich der Zeilentyp-Bezeichner) sind. Sie finden diese in Ihren Datenfluss in drei getrennte Strömungswege zu tun haben, dann die Zeilen in einer Union Element alle Datenfluss zusammen zu bringen. Von dort verarbeiten sie je nach Bedarf Ihre Ausgabedatei erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top