Wie bekomme ich den SSIS-Datenfluss, um '0.00' in eine flache Datei zu setzen?

8

Ich habe ein SSIS-Paket mit einem Datenfluss, der eine ADO.NET-Datenquelle (nur eine kleine Tabelle), eine Select * -Abfrage ausführt und die Abfrageergebnisse in eine flache Datei ausgibt (ich habe auch versucht, nur zu ziehen die ganze Tabelle und nicht mit einem SQL-Select).

Das Problem ist, dass die Datenquelle eine Spalte mit einem Money-Datentyp abruft, und wenn der Wert nicht Null ist, kommt sie in die Text-Flat-Datei gut (wie '123.45'), aber wenn der Wert Null ist, Es erscheint in der Zieldatei als '.00'. Ich muss wissen, wie man die führende Null in die flache Datei zurückbringt.

Ich habe verschiedene Datentypen für die Ausgabe (im Flat File Connection Manager) ausprobiert, einschließlich Währung und String, aber das scheint keine Wirkung zu haben.

Ich habe in meinem Select eine case-Anweisung wie folgt ausprobiert:

%Vor%

(führt immer noch zu '.00')

Ich habe versucht, Variationen wie folgt:

%Vor%

(Immer noch '.00')

und:

%Vor%

(ergibt '.0000000000000000000')

Dieses alberne kleine Problem bringt mich um. Kann mir jemand sagen, wie man eine Null-Money-Datentyp-Datenbank-Wert in eine flache Datei als '0.00' bekommen?

    
theog 19.05.2010, 18:41
quelle

4 Antworten

9

Könnten Sie eine abgeleitete Spalte verwenden, um das Format des Werts zu ändern? Hast du das versucht?

    
soo 20.05.2010, 14:59
quelle
8

Ich hatte genau das gleiche Problem, und soo's Antwort funktionierte für mich. Ich habe meine Daten in eine abgeleitete Spaltenumwandlung (in der Toolbox Datenflussumwandlung) gesendet. Ich habe die abgeleitete Spalte als neue Spalte vom Datentyp Unicode String ([DT_WSTR]) hinzugefügt und den folgenden Ausdruck verwendet:

Preis & lt; 1? "0" + (DT_WSTR, 6) Preis: (DT_WSTR, 6) Preis

Ich hoffe, das hilft!

    
benjaminjsanders 20.05.2010 17:42
quelle
2

Ich habe den erweiterten Editor benutzt, um die Spalte von double-precision float nach decimal zu ändern und dann die Scale auf 2:

zu setzen

    
PeterX 23.03.2015 02:54
quelle
1

Da Sie in eine Textdatei exportieren, exportieren Sie einfach die Daten vorformatiert.

Sie können dies in der Abfrage tun oder eine abgeleitete Spalte erstellen, was auch immer Sie bevorzugen.

Ich habe gewählt, die Spalte 15 Zeichen breit zu machen. Wenn Sie in ein System importieren, das Zahlen erwartet, sollten diese Nullen ignoriert werden. Warum also nicht einfach die Feldlänge standardisieren?

Eine einfache Lösung in SQL ist wie folgt:

%Vor%

Ersetzen Sie einfach '0.00' durch Ihren Spaltennamen und vergessen Sie nicht, den FROM table_name usw. hinzuzufügen.

    
John DaCosta 20.05.2010 19:48
quelle