2017-12-09 1 views
0

Derzeit Was ich habe, ist:Wie eine neue Textdatei dynamisch mit BCP Befehl erstellen

bcp "select * from TEST.dbo.HPA_1 WITH (NOLOCK)" queryout D:\Gift_Voucher\HPA\test1.txt -T -c -t 

Wenn ich den obigen Code zum ersten Mal ausführen, es funktioniert und es schafft die Text-Datei test1.txt, aber Wenn neue Daten in der Tabelle hinzugefügt werden, möchte ich eine neue Textdatei wie test2.txt und test3.txt usw. erstellen, ohne den Code in bcp zu ändern. Können wir hier etwas tun?

+0

Wie führen Sie die 'BCP' aus? von Eingabeaufforderung oder T-SQL 'xp_cmdshell'? – Squirrel

+0

Eigentlich führe ich es von SSIS aus. Ich habe eine .bat-Datei erstellt und sie aus dem SSIS-Paket aufgerufen –

Antwort

1

Ihre BAT-Datei ändern Sie den Ausgabedateipfad mit einer Befehlszeilenparameter zu ersetzen:

bcp "select * from TEST.dbo.HPA_1 WITH (NOLOCK)" queryout "%1" -T -c -t 

Im SSIS-Paket, erstellen Sie ein String-Variable für den gewünschten Ausgabedateipfad. Legen Sie die ausführbare Execute Process-Eigenschaft auf "cmd.exe" fest. Legen Sie auf der Seite "Ausdrücke" die Argument-Eigenschaft auf einen Ausdruck fest, der den Befehl mit dem BAT-Dateipfad und dem Argument der Ausgabedatei erstellt. Das folgende Beispiel umschließt auch die Werte in Anführungszeichen Leerzeichen in den Pfaden zu handhaben:

enter image description here

den Variablenwert in die Variable Ausgabedateipfad in Ihrem Paket die Ausführung der Aufgabe vor ein. Dies kann im Paketcode erfolgen oder den Wert über die SSIS-Konfiguration einstellen.

Beachten Sie, dass Sie die gleiche Funktionalität in einer Datenflusstask erzielen können, anstatt auf BCP zuzugreifen. Dies nutzt die native Exportfähigkeit von SSIS.

Verwandte Themen