Re: SSIS Problem mit Excel Spalten

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Am 25.07.2006, 10:34 Uhr, schrieb Ralf Hermanns <Ralf.Hermanns@xxxxxx>:

Hallo Ralf,

der Import von Excel-Daten ist wirklich ein sehr spezielles Thema.
Das Problem ist, dass Excel als Datenbank angesehen wird und versucht wird, anhand der ersten Spalteneinträge den Datentyp zu bestimmen. Passen die Daten in weiteren Zeilen nicht zu dieser Entscheidung, dann wird eine Null ausgegebn ==> genau dein Problem.
Man kann Excel aber daran hindern, selbstständig eine Entscheidung zu treffen:

- öffne das Eigenschaftsfenster deines Excel-Verbindungsmanagers (Verbindungsmanger im Fensterbereichbereich Verbindungs-Manager markieren und dann F4)
- Die Eigenschaft ConnectionString muss um ;IMEX= 1 ergänzt werden
- Die Properties solltet dann so aussehen: ;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";

Durch diese Angabe wird erreicht, dass alle Spalten als String zurückgegeben werden.
Die Spalten müssen deshalb teilweise explizit in den richtigen Datentyp konvertiert werden.
Geht es nur um den Update in den SQL_Server, kannst du i.d.R. die Konvertierung von Zahlen dem SQL-Server überlassen.
Du übergibst den String und der SQL-Server konvertiert es implizit in das richtige Format.
Die explizite Konvertierung im SSIS ist natürlich die sauberere Lösung.


Gruß Berthold


Hallo!

Ich habe ein Problem mit einem Excel Dokument, welches ich in eine SQL
Tabelle laden möchte.

Eine Spalte enthält neben den Texten "Gut" und "Schlecht" durch einen Fehler
beim Export auch ein paar mal -3. Die SQL Server Spalte in die diese Werte
sollen ist nvarchar(20) und NOT NULL.

Die "OLE DB SQL Ziel" Box meldet beim debuggen "Cannot insert NULL into
<diese Spalte>". Das macht so keinen Sinn, denn es gibt nirgendwo eine NULL
in dieser Spalte. Leider kann dieses OLE DB Ziel nicht die fehlerhaften
Zeilen ausgeben (oder doch? Wie?).

Der Wert -3 sollte sich doch auch in ein nvarchar abbilden lassen. Zwischen
der Quelle-Box und der Ziel-Box sind noch 2 andere Funktionskisten, eine
abgeleitete Spalte (die ihre Fehler ausweisen kann) und eine Konvertierung
(in der ich alle Textfelder auf Länge schneide und in nvarchar umwandele,
diese Box macht auch ein Fehlerlogging... meine -3 geht aber problemlos da
durch, und schlägt dann beim SQL Ziel als Fehler auf.

Was läuft da falsch???

Grüße
Ralf





--
Berthold Neumann
http://www.sql-ssis.de
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
.



Relevant Pages

  • Re: Datenbankabfrage mit IN
    ... Datentyp der Spalte ist NVarChar. ... Gib doch einfach deinen Zusammengebastelten SQL String aus und nutze den ... dann genau die Stelle mit dem Fehler. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Insert Fehler8152
    ... Eine genauere Angabe gibts da leider nicht, ... Und somit ist es dem SQL Server schlecht ... Generell gilt es eher den Fehler zu vermeiden. ... INSERT INTO Tabelle (Spalte) ...
    (microsoft.public.de.sqlserver)
  • SSIS Problem mit Excel Spalten
    ... Ich habe ein Problem mit einem Excel Dokument, welches ich in eine SQL ... Die SQL Server Spalte in die diese Werte ... Die "OLE DB SQL Ziel" Box meldet beim debuggen "Cannot insert NULL into ... abgeleitete Spalte (die ihre Fehler ausweisen kann) und eine Konvertierung ...
    (microsoft.public.de.sqlserver)
  • =?ISO-8859-1?Q?sporadisches_Problem_=22Von_Excel_wurde_unlesbarer_Inh?= =?ISO-8859-1
    ... Fällen wieder die oben genannte Fehlermeldung (obwohl sie ja nun ... Fehler beim Laden. ... Zeile 2, Spalte 554. ... Excel 2007 deinstalliert und frisch installiert, ...
    (microsoft.public.de.excel)
  • UPDATE Problem(chen)
    ... mit einem Text in Spalte C schreiben. ... Ich habe es mit einem Update probiert, allerdings ergibt es einen SQL ... Wo liegt der Fehler und wie muss die Abfrage lauten? ... UPDATE products SET Bezeichnung=concat_ws('Drucker ', producer, model) ...
    (de.comp.datenbanken.mysql)