2016-05-16 6 views
1

Ich habe eine Variable erstellt, die in einer gespeicherten Prozedur Typ Tabelle ist. Am Ende der Prozedur wähle ich alle Zeilen in der Tabelle aus und zeige sie an. Wenn ich mit der rechten Maustaste auf die Kopfzeilen klicke und "Speichern unter" auswähle, kann ich den Typ in "Alle Dateien" ändern und die Datei als Textdatei speichern. Dies funktioniert einwandfrei, außer dass die Spalten, die NULLEN in ihnen enthalten, als NULLS gespeichert werden. Ich möchte, dass NULLs mit Leerzeichen gefüllt werden.So entfernen Sie NULLEN aus Speichern unter SQL Server Management Studio

Ich habe versucht, eine Möglichkeit zu finden, eine Datei mit einer gespeicherten Prozedur zu erstellen, aber die meisten Dinge zeigen an, SSIS zu verwenden, aber ich kann nicht herausfinden, wie SSIS mit einer Variablen verwendet wird, die eine Tabelle anstelle von ist aktuelle Tabelle

Wenn ich Nullen entweder durch Leerzeichen ersetzen oder eine gespeicherte Prozedur verwenden könnte, um dasselbe zu tun, wäre es großartig. Ich kann Tabulator- oder Komma-Trennzeichen nicht verwenden, da das Endprodukt eine flache Datei sein muss, in der jede Spalte die gleiche Anzahl von Zeichen verwendet, wie in den Spaltenüberschriften deklariert. Gefüllt mit Leerzeichen.

Vielen Dank für jede Hilfe, die Sie anbieten können.

Prost

P.S. Ich verwende SQL Server 2012 Management Studio

+0

Standardwerte leerer Strings zur Tabellendefinition hinzufügen. –

+0

Ich habe vergessen zu erwähnen, dass ich die Spalten tatsächlich auf '' voreingestellt '' hatte, aber ein Teil der Stored Procedure wird die Spalte zurück auf NULL setzen –

Antwort

1

Wenn das letzte, was Sie in der gespeicherten Prozedur tun ist Select * From TempTable dann können Sie das SP in einer OleDb Quellenkomponente verwenden. Wechseln Sie von Table oder View zu Sql Command und verwenden Sie die Exec (sp_SomeName) -Syntax. Dadurch wird eine Pipe erstellt, die Sie mit einer Zielkomponente, z. B. einer Einfachdatei, verbinden können.

Ich habe viele Probleme im Laufe der Jahre mit Save Results As ... gesehen. Ich werde dies nur für informelle "Quick Check" -Dateien verwenden und nicht für irgendetwas, das als Live- oder Produktionsdaten betrachtet wird.

Hier ist ein guter Blog, der auch zeigt, wie man Parameter verwendet. http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx

+0

Danke, ich überprüfe das! Ich wusste nicht, dass ich die Quelle zu der gespeicherten Prozedur ändern konnte –

+0

Danke Joe! Ich konnte eine Flat-Datei aus SSIS erstellen und ich glaube, dass die Daten so aussehen, wie ich es will. NULLS wurden durch Leerzeichen ersetzt; Ich habe es auf eine feste Breite eingestellt. Jetzt muss ich nur herausfinden, wie das SSIS-Paket über eine Stored Procedure ausgelöst wird und die Datei jedes Mal umbenannt werden muss. Danke nochmal für die Hilfe! –

+0

Ich bin froh, dass ich helfen konnte :). Wenn Sie den SSIS-Katalog verwenden, können Sie ganz einfach von tsql aus einen SP aufrufen. Falls nicht, gibt es viele Beispiele für Vorgehensweisen, die von Ihrem Bereitstellungsmodell abhängen. Für die Dateibenennung könnte es so einfach sein wie ein Ausdruck in den Eigenschaften des Verbindungsmanagers oder, falls erforderlich, können Sie eine sql-Task ausführen, um einen Wert mit tsql oder einer Skriptaufgabe zu erhalten, um benutzerdefinierten Code zu schreiben. Der Schlüssel ist das Festlegen der Connection Manager-Verbindungszeichenfolgeneigenschaft. –

3

Der einfache Weg, dies zu tun wäre, um die NULL s zu Leerzeichen in Ihrem SELECT Anweisung zu konvertieren.

SELECT COALESCE(yourcolumn, '')

Setzen Sie die COALESCE Klausel um jede Spalte, die NULL s in sich hat.

Using COALESCE article link