none
Debuggen RRS feed

  • Frage

  • Hallo!

    Ich habe ein SSIS-Paket (Arbeit im Designer) mit dem ich eine csv-Datei in eine SQL-Server-Tabelle einlesen möchte.

    Der Typ der Spalten der Flatfilequelle ist WSTR. Da ich Integer Spalten der Tabelle befüllen möchte, habe ich ein Datenkonvertierungs-Objekt zwischengeschalten.

    Beim ausführen des Paketes bekomme ich die Fehlermeldung:

    [Datenkonvertierung [1233]] Fehler: Datenkonvertierungsfehler beim Konvertieren der A1_4-Spalte (1189) in die I4_A1_4-Spalte (1255). Die Konvertierung gab den Statuswert '2' und den Statustext 'Der Wert konnte aufgrund eines möglichen Datenverlustes nicht konvertiert werden.' zurück.

    Die Abarbeitung bricht bei Zeile 9984 ab.

    Wenn ich ein Daten-Viewer dazwischen schalte, laufen die ersten ca. 8000 Zeilen ohne Fehler durch. Nach dem klick auf die weiter-Schaltfläche bricht die Konvertierung ab.

    In der csv stehen  n u r  3stellige Zahlen, mit Excel zB. läßt sie sich ohne Fehler öffnen (Spalte A1_4 enthält nur Zahlen).

    Welche Möglichkeit habe ich, die genaue (Fehler) Zeile zu ermitteln?

    Fred.

    Rechner: Win7 Pof 64Bit 16GB Arbeitsspeicher
    SQL-Server: 2008

    Freitag, 22. Februar 2013 12:05

Antworten

  • Hallo Fred,

    leite doch die Fehlerausgabe der Datenkonvertierung in eine Tabelle, die anstelle der numerischen Spalten varchar-Felder hat.

    Dann solltest Du sehen, welche Zeilen dort landen und den Fehler einfacher eingrenzen.

    Konfiguriere hierzu die Fehlerausgabe und stelle bei "Abschneiden" den Wert auf "Zeile umleiten". Dann kannst Du den roten Pfeil auf die Zieltabelle ziehen und erhältst dort die Sätze. Ggf. stelle auch den Wert bei "Fehler" so ein.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu/
    • Als Antwort vorgeschlagen Christoph Muthmann Montag, 25. Februar 2013 14:09
    • Als Antwort markiert perlfred Mittwoch, 21. August 2013 08:16
    Freitag, 22. Februar 2013 12:33

Alle Antworten

  • Hallo Fred,

    leite doch die Fehlerausgabe der Datenkonvertierung in eine Tabelle, die anstelle der numerischen Spalten varchar-Felder hat.

    Dann solltest Du sehen, welche Zeilen dort landen und den Fehler einfacher eingrenzen.

    Konfiguriere hierzu die Fehlerausgabe und stelle bei "Abschneiden" den Wert auf "Zeile umleiten". Dann kannst Du den roten Pfeil auf die Zieltabelle ziehen und erhältst dort die Sätze. Ggf. stelle auch den Wert bei "Fehler" so ein.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu/
    • Als Antwort vorgeschlagen Christoph Muthmann Montag, 25. Februar 2013 14:09
    • Als Antwort markiert perlfred Mittwoch, 21. August 2013 08:16
    Freitag, 22. Februar 2013 12:33
  • Hallo Christoph!

    Vielen Dank für deine Hilfe! Mit der Fehlerbehandlung hatte ich mich bis jetzt noch nicht beschäftigt.

    Ich habe nach deiner Anleitung die Fehlerausgabe umgeleitet.

    Ergebnis:  Alle Zeilen landen in der Fehler-Tabelle. Fehlercode: -1071607681 Spalte: 1258

    Nach genauerer Analyse habe ich herausgefunden, dass das immer die erste leere Spalte (pro Zeile) in der csv-Datei ist (Semikolon und wieder Semikolon).

    Wie könnte ich denn diesen Fehler abfangen?

    Freitag, 22. Februar 2013 13:36
  • Hast Du denn auch versucht diese Spalte zu konvertieren?

    Ansonsten kannst Du diese ja auch ohne Konvertierung durchschleifen.

    Falls es nicht klappt, poste doch mal einen Screenshot und evtl. zwei Beispielzeilen.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu/
    Freitag, 22. Februar 2013 14:13
  • Hallo Christoph!

    Zu den Bildern komme ich wahrscheinlich erst Montag.

    Ich habe deine Frage aber noch nicht so richtig verstanden.

    Es ist eine csv-Datei mit 14 Spalten. Alle 14 Spalten lasse ich mit einem Datenkonvertierungs-Objekt von WSTR in I4 konvertieren.

    In der csv-Datei sind aber nicht immer (eigentlich fas nie) alle 14 Spalten (pro Zeile) belegt.

    Zeile SP1 SP2 SP3
      1    10                         Fehler tritt auf in SP2 
      2    15   30                  Fehler tritt auf in SP3

    usw.

    csv:

    Zeile;SP1;SP2;SP3
    1;10;;
    2;15;30;

    Schönes Wochenende und nochmals vielen Dank für deine Hilfe!

    Fred.


    • Bearbeitet perlfred Samstag, 23. Februar 2013 11:58 Erweiterung
    Freitag, 22. Februar 2013 14:29
  • Hallo Christoph!

    Ich habe es jetzt so gelöst, dass ich die Ausgabespalten der csv-Datei in ein Abgeleitete Spalte - Objekt fließen lasse und dort jede Spalte auf LEER prüfe (SP3 == "" ? "0" : SP3) bevor ich die Daten an das Datenkonvertierung-Objekt übergebe.

    So funktioniert es (Im Datenviewer steht dann in jeder Spalte auch wirklich eine Zahl [0 oder n]). Daß das Datenkonvertierung-Objekt aber nicht mit leeren Inhalten umgehen kann ist schon schwach!

    Dein Hinweis zur Fehlerausgabe hat mir bei der Fehlersuche sehr geholfen! Nochmals vielen Dank!!!

    Es hat mir zB. gezeigt, dass eine Prüfung auf ISNULL() nicht relevant ist.

    Schöne Grüße aus dem verschneiten Leipzig.

    Fred.

    Montag, 25. Februar 2013 12:15