2016-09-19 6 views
0

Ich habe eine SQL-Tabelle aus einer Komma-getrennte Notepad-Datei gefüllt. In der Tabelle habe ich 12 verschiedene Spalte Wert gegenüber dem ersten columnA:Schleife über verschiedene Zeilen mit SSIS

select distinct ColumnA 
From Table 

die Werte A01, A02, A03 usw.

Was ich tun möchte, ist eine Tabelle erstellen, dynamisch eine Schleife in SSIS verwendet statt sie manuell durch

select * 
into A01 
from Table 
where col1 = 'A01' 

Insgesamt gibt es mehr als 20.000 Zeilen von diffrent A01 tun - A12.

Was ist der beste Weg, dies in SSIS zu tun? so dass jeder Wert, d. h. A01, A02, in eine eigene Tabelle eingetragen wird?

Danke

+0

Sie brauchen dafür keine Schleife. In der Tat sind Schleifen ein sehr starkes Zeichen, dass Sie etwas falsch machen. Fügen Sie einfach ein Ziel zu 'A01' hinzu und ordnen Sie die gewünschten Spalten zu. Obwohl es scheint, müssen Sie zuerst Ihre Daten deaktivieren, möglicherweise mit der [Unpivot Transformation] (https://msdn.microsoft.com/en-us/library/ms141723.aspx). –

+1

PS, möchten Sie vielleicht auch die [bedingte Split-Transformation] (https://msdn.microsoft.com/en-us/library/ms137886.aspx) betrachten, die eine Zeile basierend auf den Kriterien –

Antwort

0

Wenn Sie dies in SSIS tun möchten, können Sie die Conditional Split transformation verwenden können, um jede Zeile zu einem anderen Ausgang auf dem Wert von col1 basiert zu senden.

Zum dynamischen Erstellen von Tabellen müssen Sie dies vor dem Datenfluss tun. Wenn Sie eine Schleife verwenden möchten, können Sie eine Execute SQL Aufgabe verwenden, um die unterschiedlichen Werte von col1 zu erhalten, eine Schleife durch diesen Datensatz zu erstellen und eine weitere Execute SQL Aufgabe auszuführen, die eine CREATE TABLE-Anweisung ausführt.

Wenn Sie dies tun möchten, bevor Sie die Notepad-Datei sogar in eine Tabelle importieren, müssen Sie eine Skriptaufgabe verwenden, um die Datei zu lesen und die CREATE TABLE-Anweisungen zu generieren.

+0

an eine von mehreren Ausgaben sendet danke, aber wie würde ich über die verschiedenen Werte schleifen und die dynamischen Tabellen erstellen? Müsste ich Variablen verwenden? Ich bin nur der einfachste und effizienteste Weg, um die Tabellen basierend auf den verschiedenen Werten zu erstellen und zu füllen. Das ist ohne Verwendung von Skripten etc. – abs786123

+0

Ja, Sie würden Variablen verwenden. Die erste ExecuteSQL würde eine Objektvariable mit einem Dataset der verschiedenen Werte füllen, und die Schleife würde eine Variable mit der CREATE TABLE-Anweisung füllen, die für jeden Wert ausgeführt wird. –

+0

Müsste ich die Parameterzuordnung in Ausführen SQL-Aufgabe verwenden? Ich verstehe, was Sie meinen, aber ich weiß nicht, wie man es implementiert lol – abs786123

Verwandte Themen