SSIS erzwingt weiterhin das Ändern der Excel-Quellzeichenfolge

9

In Excel gibt es eine Spalte, die Text sein soll, aber SSIS sieht dort numerischen Text und lässt ihn automatisch mit doppelter Genauigkeit schweben [DT_R8].

Ich kann es manuell in den Spalten Extern und Output des Ausgabezweigs ändern, aber die Fehlerausgabe lehnt es einfach ab, die entsprechende Spalte zu ändern.

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

Ich habe versucht, das Paket xml zu ändern. Ich habe das versucht IMEX=1und typeguessrow=0aber nichts davon hat mein Problem behoben. Hat dies überhaupt eine Lösung? Es gibt auch Artikel, in denen vorgeschlagen wird, Ihre Registrierung so zu ändern, dass Excel mehr als die Standardzeilen von 8 liest, bevor der Datentyp erraten wird. Ich möchte diesen Weg nicht gehen, denn selbst wenn er funktionieren würde, müsste ich die Registrierung auf dem Computer ändern, auf dem ich das Paket ausführen möchte.

Das Excel-Feld, das in das SQL-Feld nvarchar importiert werden soll, lautet beispielsweise

295.3
296.33

Sie werden jedoch als in die SQL-Tabelle geschrieben

295.30000000000001
296.32999999999998

Ich habe Dataviewer eingefügt und die Felder zeigen

295.3
296.33

den ganzen Weg durch die Ausführung, was korrekt ist, aber ich denke, wenn es die OLE DB-Zielquelle trifft, konvertiert es es irgendwie in das

295.30000000000001
296.32999999999998

was falsch ist.

Ich habe auch Werte wie V321.1 und V213.34 zum Beispiel, die definitiv keine ganzen Zahlen sind und als varchar gespeichert werden müssen.

Juan Velez
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Paul White 9

Antworten:

2

Ist es möglich, die Datei als CSV-Datei abzurufen, die wie eine Textdatei importiert werden kann und dieses Problem nicht aufweist? Im Allgemeinen lehne ich alle Excel-Dateien zurück und frage nach einem anderen Format, da SSIS und Excel auf vielen Ebenen nicht gut zusammenspielen.

HLGEM
quelle
1
Ich hoffe, dass die Änderung der CSV- oder TXT-Datei in naher Zukunft erfolgt. wird die Dinge viel einfacher machen.
Juan Velez
2

Es scheint, dass es keine Möglichkeit gibt, dieses Problem zu beheben. Excel betrachtet die ersten Datenzeilen in der Spalte und erzwingt den Datentyp immer auf FLOAT, egal was passiert. Ich erhielt die Lösung, eine Vorlage mit einigen Varchar-Zeichen in den ersten Zeilen (8+) zu erstellen, damit EXCEL diese als Datentyp übernimmt und dann meine Daten importiert. Da ich Source Safe verwende, kann ich eine Datei "einchecken", sodass meine Paketdatei "schreibgeschützt" ist, sodass Visual Studio meine vordefinierten Datentypen nicht ändern kann.

Juan Velez
quelle
1

Schritt 1: Fügen Sie IMEX=1; MAXROWSTOSCAN=0die Verbindungszeichenfolge hinzu (z Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0". B. ).

Schritt 2: Schließen Sie die Lösung. Öffnen Sie das SSIS-Paket im Texteditor und suchen Sie die Spalten, die immer wieder zum vordefinierten Datentyp zurückkehren. Aktualisieren Sie es manuell in der XML-Datei auf das gewünschte Format.

Schritt 3: Öffnen Sie das Paket in SQL Server Data Tool und führen Sie es aus. Jetzt sollten Sie in der Lage sein, die Daten so zu laden, wie sie aus der Datei stammen.

user1968485
quelle
Entschuldigung, aber der Quelldatentyp ist nicht im Paket enthalten. Nur die Zielspaltentypen. Dies macht den Zweck erneut zunichte, da die Konvertierung immer noch neben dem Microsoft.Ace-Treiber (oder dem ausgewählten Treiber) erfolgt und der Datenverlust bereits aufgetreten ist, als er in SSIS und in die Zieltabelle gelangt.
Umgekehrter Ingenieur