Frage SSIS-Skriptkomponente, Nullwerte zulassen


Ich habe ein SSIS-Paket, das ich programmiere, und meine Skriptkomponente lässt keine Spalteneingaben zu. Ich habe das Kästchen angeklickt, um Nullen in der Quellkomponente der flachen Datei zu behalten. Mein Programm läuft gut bis zu meiner Skriptkomponente, wo ich den Fehler "Die Spalte hat einen Nullwert" (super vage, ich weiß) bekomme. Die Spalte, die derzeit den Fehler auslöst, ist eine "int" -wertige Spalte und wird für Aggregationen in meinem Skript verwendet.

Ich könnte die Null-Werte 0s machen oder "NULL" sagen, aber ich würde es vorziehen, sie leer zu lassen.

Ich verwende SQL Server BIDS 2008.


5
2018-06-25 22:19


Ursprung


Antworten:


Da SSIS mit den Datenbanken so viel beschäftigt und nicht viel Zeit zwischen DB NULL und C # NULL aufwenden möchte, erstellen sie Boolesche Eigenschaften für jede Eingabespalte im Puffer mit der Namenskonvention (columnname) _IsNull. Sie können mehr darüber lesen MSDN.

Sie müssen also diese Pufferspalten verwenden, um zu ermitteln, ob der Wert null ist, und dann das ausführen, was Sie mit dieser Spalte in der Komponente zu tun versuchen.

So etwas wie

if (!Row.MyColumn_IsNull) { 
//do something }
else {
//do something else, or nothing, etc.
}

8
2018-06-25 22:26



Während Kyle's Antwort sehr ausreichend ist, habe ich eine andere Methode benutzt, die gut funktioniert. Ich benutzte das Ternär für c #.

Wert = Wert_Ist Null ? Wahrer Wert : Falscher Wert;

Reihe.Rowname = Reihe.Rowname_Ist Null ? 0: Reihe.Rowname;

Dies änderte den Wert meiner Null-Integer-Spalten auf 0, wenn sie in meinem Skript null waren. Ansonsten behielt es den Wert bei.


2
2018-06-26 12:58



Tritt Ihr Fehler irgendwo im C # -Code auf? Es wird manchmal etwas verrückt, wenn Sie eine Datenbankspalte mit dem Datentyp int haben und Nullen zulassen. In C # land musst du den int benutzen? wie int, wenn Sie Nullen akzeptieren müssen. Ansonsten sind die bereits erwähnten Ansätze ein guter Weg.


0
2018-06-26 13:26