Ich erstelle ein Paket, in das ich Daten aus einer Datenbank in eine leere Excel-Datei exportieren werde. Wenn ich nur die Quell- und Zielkomponenten hinzufügte und das Paket ausführte, wurde ein Konvertierungsfehler angezeigt, der besagte, dass die Ausgabespalte und die Spalte "A" nicht zwischen Unicode- und Nicht-Unicode-Zeichenfolgendatentypen konvertieren können.
Um dies zu beheben, habe ich eine Datenkonvertierungskomponente hinzugefügt und alle Spalten in konvertiert
"Unicode-Zeichenfolge [DT_WSTR]"
und ich habe den Fehler nicht mehr erhalten. Das einzige Problem ist, dass ich ungefähr 50 Spalten hatte, in denen ich 1 zu 1 gehen und "Unicode String [DT_WSTR]" aus der Dropdown-Liste auswählen musste. Ich musste dann in die Zielkomponente gehen und die neu konvertierten Spalten meiner Excel-Datei zuordnen.
Meine Frage ist, ob jemand anderes darauf gestoßen ist. Gibt es einen effizienteren Weg, um alle manuellen Datentypkonvertierungen durchzuführen? Es scheint nicht praktisch zu sein, alle Spalten einzeln zu konvertieren und zuzuordnen, insbesondere wenn Sie eine große Anzahl von Zeilen haben.
Ich verstehe, dass Excel-Dateien nicht der beste Weg sind, um Daten zu importieren und zu exportieren, aber dies ist in diesem speziellen Fall erforderlich.
Ich könnte nach einer Möglichkeit suchen, einfach in eine flache Textdatei zu exportieren und dann als letzten Schritt im Paket zu versuchen, in Excel zu konvertieren. Ich hoffe, dass dies nicht den gleichen Unicode / Nonunicode-Konvertierungsfehler auslöst.
quelle
Antworten:
Als Alternative zu RDC überspringe ich einfach die Konvertierung der Datentypen in SSIS und wandle sie in meiner Quellabfrage explizit als nvarchar um.
Verwendungszweck
In Ihrer Quellabfrage (und Sie werden mit einer Quellabfrage und nicht einfach die Tabelle in der Drop - Down - Auswahl), explizit werfen Dinge auf einen geeigneten n (var) char Länge.
Anstatt
Verwenden Sie eine Abfrage wie
Die klugen Schüler von AdventureWorks werden erkennen, dass die Daten bereits ein
n(var)char
Typ waren, dies diente jedoch lediglich der Demonstration des Konzepts.Leistungen
Data Conversion Component
in SSIS zuweisen und speichernquelle
CONVERT
sollte es einfacher sein, 50 MalCAST
Nativ gibt es keine Möglichkeit, das zu tun. Sie können jedoch - Ersetzen der Datenkonvertierungskomponente für SSIS von Codeplex herunterladen und dies auf einmal tun.
Weitere Infos finden Sie hier .
quelle
Wenn Sie nur von "Unicode-Zeichenfolge (DT_WSTR)" zu "Zeichenfolge (DT_STR)" oder umgekehrt wechseln müssen, können Sie dies tun:
Suchen Sie nach der Zeichenfolge,
DTS:DataType
wenn = "130" folgt, und die Spalte wird als DT_WSTR (Unicode) definiert.Wenn darauf = "129" folgt, ist die Spalte als DT_STR (Nicht-Unicode) definiert. Verwenden Sie Suchen und Ersetzen mit Sorgfalt (Sie haben zuvor eine Kopie erstellt, oder?)
Speichern Sie die Datei und vielleicht war es das.
quelle