2017-02-26 3 views
1

Ich habe eine Eingabedatei, die täglich aus einer externen Quelle generiert wird, so dass ich die Kontrolle darüber habe. Die Datei soll von SSIS gelesen und dann in eine SQL Server 2012-Datenbank eingefügt werden. Ich bin auf einer bestimmten Linie erschienen.Entfernen Sie das "NUL" -Zeichen in SSIS, das aus einer Textdatei importiert wird

Die Linie in Fragen wie folgt aussieht:

"|"James"|"Done"|""|""|""|"11548"|" "|""|""|""|""|""|""|""|""|""|" 

Der Wert im siebten Feld ist nicht wirklich ein Raum, sondern ein Zeichen ASCII ‚NUL‘ (0), und ich scheinen nicht in der Lage zu sein, zu entfernen es ist in SSIS.

Ich verwende eine abgeleitete Spalte Transformation, um die Null zu ersetzen. Die gesamte Zeichenfolge wird als "DataColumn" bezeichnet. Bis jetzt habe ich Folgendes im Ausdrucksersteller ausprobiert.

1) Replace(DataColumn, "CHAR(0)", "") 
2) Replace(DataColumn, "CHAR(0)", "\"\"") 
3) Replace(DataColumn, "ASCII(0), "") 
4) Replace(DataColumn, " ", "") 
5) Replace(DataColumn, "\x000", "") 

Darüber hinaus haben die folgenden Vorschläge auch versucht worden:

Replace(DataColumn, "0x0", "") 
Replace(DataColumn, "\x0000", "") 

Bisher keine scheinen, für mich zu arbeiten, so würden alle Vorschläge sehr geschätzt.

+0

Zitieren Sie die Funktionsaufrufe nicht. Wenn Sie das tun, sucht es nach einer literalen Zeichenfolge wie 'CHAR (0)' – mroach

Antwort

1

Wenn Sie die Funktion REPLACE aufrufen, notieren Sie nicht die Aufrufe der Funktionen CHAR oder ASCII. Wenn Sie sie angeben, sucht REPLACE zum Beispiel nach einer Literalzeichenfolge mit dem Wert CHAR(0).

Dieses Beispiel hier Streifen eine NULL-Zeichen

declare @str varchar(100) = 'Hello>' + char(0) + '<' 
declare @fixed varchar(100) = replace(@str, char(0), '') 

select @str, len(@str), @fixed, len(@fixed) 

Nebenbei bemerkt: die ASCII Funktion den numerischen codepint für ein Zeichen gibt, das ist so nicht das, was Sie nach hier sind, da Sie Sie suchen die wissen Nullzeichen an Punkt 0

+0

Nur versucht, aber das Entfernen der Anführungszeichen in SSIS-Ausdruck-Generator, verursacht ein "Die Funktion" char "wurde nicht erkannt. Entweder der Funktionsname ist falsch oder ist nicht vorhanden." Fehlermeldung. Ich habe sowohl char (0) als auch CHAR (0) versucht. Danke für das Hinweis auf die Randnotiz BTW. Etwas zum erinnern. –

+0

Ahh, mir war nicht klar, 'CHAR' wird in SSIS nicht unterstützt. Versuchen Sie: 'REPLACE (DataColumn, 0x0, '')'. Entweder das, oder verwenden Sie '\ x0000' (vier Nullen) in Ihrer Suchzeichenfolge. – mroach

+0

Beide "\ x0000" \ x0000 warf Fehlermeldungen. ersetzen (DataColumn, "0x0", "") ausgeführt, aber das ursprüngliche Problem immer noch manifestiert –

Verwandte Themen