Excel Import mit SSIS - leere Spalte nicht mit NULL

CharlyOli

Aktiver Benutzer
Beiträge
31
Guten Abend zusammen,

ich verzweifle an einem Import von Exceldaten in eine SQL Server Tabelle mit SSIS.

Problem:
Ich bekomme in regelmäßigen Abständen Artikeldateien als Excel Datei zugeschickt, die ich mit SSIS - Tools in einer SQL Tabelle importiere.
Der Import funktioniert ohne Probleme, jedoch werden mir seit der letzten Version (zur Verfügug gestellt Excel Datei), Felder die in Excel "leer" sind mit "NULL" in die entsprechende Spalte des Datensatzes in die SQL Tabelle geschrieben.

Dies führt dann dazu, dass ein Folgeschritt nicht mehr richtig funktioniert.
Habe zum Test, ein "altes" Excel File eingelesen und dort ist es nicht der Fall.
In beiden Exceldateien sind betreffenden Spalten in Excel sind als Text markiert.

Finde den Fehler leider nicht und hoffe auf einen Tip von euch.

Muss man das Excel File noch irgendwie anders formatieren?!

Ziel soll sein, dass Felder die leer sind, auch leer übergeben werden, und nicht mit "NULL".

Bitte auch PDF in der Anlage beachten. Hier habe ich beide Importe gegenübergestellt.

Viele Grüße
CharlyOli
 

Anhänge

  • SSIS Import.pdf
    556,8 KB · Aufrufe: 7
Werbung:
Excel ist ein denkbar schlechtes Format für Import und Export.
Du zeigst weder die Exceldaten selbst, noch die "letzte Version", noch den Aufbau der Tabelle. Man weiß nicht, was "die letzte Version" überhaupt meint. Die letzte Excelversion? Die letzte Lieferung?
Es gibt in Datenbanken etwas, das nennt sich Spaltentyp, dann gibt es Defaults und Referenzen, alles zusammen nennt sich Datenmodell. Dabei spielen "Formatierungen", Ländereinstellungen usw. keine Rolle. Dazu kommen ggF. Trigger und SP.

Und Dein PDF sagt nichts zu alle dem. Leer ist gewöhnlich Null für DB. Ob die Darstellung Deiner Tools nun NULL zeigt oder einen String "NULL", kann man ebenfalls nicht erkennen.

Die SISS Transformation zeigst Du auch nicht.
Da kann man nur raten oder als versierter MS SISS /Excel Mensch vielleicht auf einen bekannten Fehler tippen.
Ich bin hab davon keine Ahnung und kann Dir nur sagen, wie Du hilfreiche Informationen liefern kannst.
 
Tut mir leid, dass
Muss es nicht, Du kannst jederzeit Deine Angaben präzisieren.

Dabei kommt es weniger drauf an, ein Hochglanz PDF zu posten, sondern relevante Infos zu liefern. Die dürfen grundsätzlich gerne purer Text sein. Am besten original CSV (gekürzt), Table Create Statements, SQL Inserts usw. Alles andere erzeugt nur mehr Reibungsverluste.
 
Hallo dabadepdu,

vielen Dank für deine Nachricht. Ich versuche es nochmal besser zu verdeutlichen.

Ausgangsituation:
1. Ich bekomme monatlich ein Excel File mit Artikeldaten. (Beispiel siehe Anlage "Artikeldaten.xls")
(Momentan muss ich noch mit Excel leben auch wenn es ein denkbar schlechtes Format ist)
Hierbei bitte die z. B. die Spalte "J" + "K" beachten.
--> dort ist kein Wert eingetragen.

Datenverarbeitung:
Die o. g. Exceltabelle importiere ich dann via SSIS in eine vorhandene SQL Server Tabelle "IMPORT_PRODUKTE_VARIANTEN_Artikel"
Script zum Erstellen auch in der Anlage

Ergebnis + mein Problem:
Neuerdings werden mir die o. g. Daten aus den Spalten "J" + "K" mit "NULL" in die Tabelle geschrieben.
Ich möchte aber dass es wie im Original File blank / leer ist!
Warum ich das so möchte, weil bisher immer funktioniert hat. Vielleicht liegt es am Excelformat, dass mir mein Kunden schickt. Das kann ich aber nicht mit 100%tiger Sicherheit sagen.

Wo muss ich ansetzen, damit nicht "NULL" ausgegeben wird sondern einfach nur leer ist.

Du würdest mir echt helfen, wenn du mir einen Tipp geben könntest! :)
Reicht dir diese Info erstmal? Wenn du noch mehr brauchst, lass es mich einfach wissen.

VG + Vielen Dank
Charly Oli
 

Anhänge

  • 2_Script-Importtabelle.txt
    710 Bytes · Aufrufe: 2
  • 1_Artikeldaten.zip
    12,9 KB · Aufrufe: 2
Ein Nachtrag noch.
Ich lade zusätzlich ein Excel File hoch, welches funktioniert. Wenn ich diese Datei (= eine alte Artikeldatei) nehme, dann werden
die Felder "leer" übergeben.

Finde leider den Unterschied nicht. ...
 

Anhänge

  • 1_2_Artikeldatendatei-Import funktioniert.zip
    16,6 KB · Aufrufe: 2
Also ich seh da durch aus einen Fehler in der SSIS Transformation das NULL nicht entsprechend behandelt wird. Schließlich gibt es in der Tabelle 4 Felder die NULL sein dürfen und es deswegen auch sein können. Natürlich könntest Du die Tabelle mit Defaultwerten erstellen. Oder konvertierst das Execl -> CSV-> befüllst die nullable Spalten mit '' oder '-'. Undzum Abschluss noch ein Artikel wo dein Problem beschrieben ist: How to Handle NULL Values Loaded by SSIS from Excel Files
 
Guten Morgen Zusammen,

habe es gleich getestet und das Excel File in eine CSV konvertiert.
--> so funktioniert es!

Hilft mir schon mal weiter!! Vielen Dank! :)
 
Hoffentlich letzte Frage:
Auf meinem Kundenserver läuft leider noch Visual Studio 2010.
Nachdem ich die Quelle als "Flat File Source" anstatt Excel abgeändert habe, bekomme ich die Fehlermeldung in der Anlage.
T-SQL hast du eine Idee wie ich die Konvertierung anpassen kann?

LG
CharlyOli
 

Anhänge

  • Konvertierungsfehler.jpg
    Konvertierungsfehler.jpg
    83,6 KB · Aufrufe: 5
Schau mal nach wie das CSV gespeichert ist und konvertier es dann. Oder Du erstellst die Tabelle mit einer UTF8 Collation oder Du benutzt COLLATE. Du kannst Dir auch erstmal hiermit "SELECT t.name TableName, c.name ColumnName, collation_name FROM sys.columns c inner join sys.tables t on c.object_id = t.object_id; " die Collation deiner Importtabelle anschauen.
 
Schließlich gibt es in der Tabelle 4 Felder die NULL sein dürfen und es deswegen auch sein können
An der Stelle wäre interessant, was der TE eigentlich wirklich für ein Problem hat.
Dies führt dann dazu, dass ein Folgeschritt nicht mehr richtig funktioniert.
Was für ein Folgeschritt und wie äußert sich der Fehler?

Die Daten, die @CharlyOli geliefert hat, zeigen jedenfalls Leerwerte in Spalten, die laut Tabellendefinition nicht leer sein dürfen.
Das ist allerdings eine andere Stelle, als in den PDF markiert und extra auf genannt:
Daten aus den Spalten "J" + "K" mit "NULL" in die Tabelle geschrieben
Also ist das vielleicht eine "falsche Spur"?
 
An der Stelle wäre interessant, was der TE eigentlich wirklich für ein Problem hat.

Was für ein Folgeschritt und wie äußert sich der Fehler?

Die Daten, die @CharlyOli geliefert hat, zeigen jedenfalls Leerwerte in Spalten, die laut Tabellendefinition nicht leer sein dürfen.
Das ist allerdings eine andere Stelle, als in den PDF markiert und extra auf genannt:

Also ist das vielleicht eine "falsche Spur"?
Das Problem hat der TE ganz genau beschrieben. Die beiden betroffenen Spalten "J" + "K" dürfen laut Tabellendefinition NULL sein.
 
Werbung:
Das Problem hat der TE ganz genau beschrieben. Die beiden betroffenen Spalten "J" + "K" dürfen laut Tabellendefinition NULL sein.
Ja, das ist eine Beschreibung, aber für sich genommen kein Problem.
Ich habe darauf hingewiesen, dass an anderer Stelle ein Problem stecken könnte: Daten, die gegen die Vorschriften der Tabellendefinition verstoßen, bei Spalten, die nicht NULL sein dürfen.
 
Zurück
Oben