2017-04-19 8 views
2

Good Day Alle,SSIS Zustand Split auf Spaltenwert basierend

Ich habe eine SELECT-Abfrage, wo ich die Daten aus SQL ziehen dh

select invno , date_received from sales 

Was ich tun möchte, ist die Datei in mehrere Dateien aufgeteilt bedingte Aufteilung verwenden. Ich weiß nicht, wie die Bedingung gesetzt i wie unten versucht enter image description here

Aber es schafft nur eine Datei, wie kann ich die mehrere Dateien basierend auf Spaltenwert schaffen, wenn ich weiß nicht, was der Wert der Spalte würde Sein?

Auch würde Ich mag den Spaltenwert dh invno zuweisen als auch auf Dateinamen verhindern von Dateien überschrieben werden

+2

In welchen Zustand möchten Sie sich teilen? – Yahfoufi

+0

Angesichts Ihrer gelieferten Source-Abfrage möchten Sie für jedes 'invno' eine Ausgabedatei mit den 'anderen Daten'' date_received' usw. erstellen, ja? – billinkc

+0

Ja, das ist nicht vollständige Abfrage nur Beispiel, so Invno 1234 erstellt eine Datei, Invno 1235 erstellt separate Datei etc, ich weiß nur nicht, wie viele verschiedene Invno gibt es –

Antwort

2

Mit dem aus der Box Baugruppen, die beste Wahl wäre, etwas zu haben, wie diese

enter image description here

Der Task "SQL ausführen" gibt eine vollständige Ergebnismenge an eine SSIS-Variable vom Typ Object zurück. Ihre Abfrage würde den eindeutigen Satz von INVNO generieren. SELECT DISTINCT T.INVNO FROM dbo.Sales AS T;

Der Foreach-Loop-Container wird dann das Recordset in eine einzelne Instanz unseres INVNO "zerlegen". Dies erfordert, dass Sie eine Variable haben, wahrscheinlich vom Typ String, um diese Nummer zu erhalten.

Die Datenflusstask hat als Quellenabfrage eine parametrisierte Abfrage. Angenommen, OLE DB-Verbindungsmanager wäre select INVNO, date_received FROM dbo.Sales AS S WHERE S.INVNO = ?; und dann wird der aktuelle Wert von INVNO (zugewiesen als Teil des Shredding vom FELC) zugeordnet

Schließlich hat der Flat File Connection Manager einen Ausdruck auf dem ConnectionString Eigenschaft, die den vollständigen Pfad zur Ausgabedatei berücksichtigt. Es könnte etwas so einfaches sein wie "C:\ssisdata\" + @[User::Invno] + ".csv"

Oh, und setzen Sie DelayValidation = True für den Flat File Connection Manager und den Datenfluss-Task.

+0

Ich vermute, einen kurzen Blick durch meine [vorherige Antworten] (http : //stackoverflow.com/search? q = user% 3A181965) wird viele Ergebnisse für Teile dieser Antwort ergeben, aber ich konnte mir kein genaues Duplikat vorstellen, um es zu schließen. dh [shred] (http://stackoverflow.com/search?q=user%3A181965+shred) [FELC] (http://stackoverflow.com/search?q=user%3A181965+FELC) usw. – billinkc

+0

danke Ihnen hat perfekt für mich gearbeitet –

Verwandte Themen