Ich versuche, eine große CSV-Datei (mehrere Gigs) einzufügen SQL Server
, aber sobald ich Import Wizard
die Datei durchgehe und schließlich versuche, die Datei zu importieren, erhalte ich den folgenden Fehlerbericht:
- Ausführen von (Fehler-) Nachrichten
Fehler 0xc02020a1: Datenfluss Aufgabe 1: Datenkonvertierung fehlgeschlagen. Die Datenkonvertierung für die Spalte "" Titel "" ergab den Statuswert 4 und den Statustext "Text wurde abgeschnitten oder ein oder mehrere Zeichen stimmten nicht mit der Zielcodepage überein."
( SQL Server Import and Export Wizard
)
Fehler 0xc020902a: Datenfluss Aufgabe 1: Die Ausgabe "Source - Train_csv.Outputs [Flat File Source Output] .Columns [" Title "]" ist fehlgeschlagen, da das Abschneiden der Zeilen in "Source - Train_csv.Outputs [Flat File Source" erfolgt ist Ausgabe] .Columns ["Title"] "gibt einen Fehler beim Abschneiden an. Für das angegebene Objekt der angegebenen Komponente ist ein Kürzungsfehler aufgetreten.
( SQL Server Import and Export Wizard
)
Fehler 0xc0202092: Datenfluss Aufgabe 1: Bei der Verarbeitung der Datei "C: \ Train.csv" in Datenzeile 2 ist ein Fehler aufgetreten.
( SQL Server Import and Export Wizard
)
Fehler 0xc0047038: Datenfluss Aufgabe 1: SSIS-Fehlercode DTS_E_PRIMEOUTPUTFAILED. Die PrimeOutput-Methode für Source - Train_csv hat den Fehlercode 0xC0202092 zurückgegeben. Die Komponente hat einen Fehlercode zurückgegeben, als die Pipeline-Engine PrimeOutput () aufgerufen hat. Die Bedeutung des Fehlercodes wird von der Komponente definiert, der Fehler ist jedoch schwerwiegend und die Pipeline wurde nicht mehr ausgeführt. Möglicherweise wurden zuvor Fehlermeldungen mit weiteren Informationen zum Fehler veröffentlicht.
( SQL Server Import and Export Wizard
)
Ich habe die Tabelle erstellt, in die die Datei zuerst eingefügt werden soll, und ich habe jede Spalte so eingestellt, dass sie varchar (MAX) enthält, sodass ich nicht verstehe, wie ich dieses Problem mit dem Abschneiden noch haben kann. Was mache ich falsch?
quelle
Antworten:
Im SQL Server-Import- und Export-Assistenten können Sie die Quelldatentypen auf der
Advanced
Registerkarte anpassen (diese werden beim Erstellen einer neuen Tabelle zu den Datentypen der Ausgabe, werden aber ansonsten nur zur Verarbeitung der Quelldaten verwendet).Die Datentypen sind nervend anders als die in MS SQL, statt
VARCHAR(255)
es istDT_STR
und die Ausgangsspaltenbreite kann eingestellt werden255
. DennVARCHAR(MAX)
es istDT_TEXT
.Advanced
Ändern Sie daher in der Datenquellenauswahl auf der Registerkarte den Datentyp aller fehlerhaften Spalten vonDT_STR
inDT_TEXT
(Sie können mehrere Spalten auswählen und alle gleichzeitig ändern).quelle
DT_DATE
,DT_NUMERIC
usw. Das war das langweiligste und ärgerlich , was ich int eine Zeit lang getan habe. Es ist jedoch besser, als eine neue Tabelle mit allen varchar (50) -Spalten zu erstellen. Das ist wirklich nicht hilfreich.Suggest Types...
alle 6000 Zeilen verwende und scannen lasse, ändert sich seltsamerweise der Längenwert aller Spalten, vermutlich auf den höchsten Wert, auf den sie gestoßen sind, aber der Fehler bleibt bestehen. Die einzige Lösung für mich war, sie alle zu ändernDT_TEXT
. Es dauerte ewig, die beleidigenden Spalten einzeln zu finden.Diese Antwort ist möglicherweise nicht universell anwendbar, hat jedoch das Auftreten dieses Fehlers behoben, auf den ich beim Importieren einer kleinen Textdatei gestoßen bin. Der Flatfile-Anbieter importierte basierend auf festen 50-stelligen Textspalten in der Quelle, was falsch war. Keine Neuzuordnung der Zielspalten hatte Auswirkungen auf das Problem.
Um das Problem zu beheben, wird unter "Wählen Sie eine Datenquelle" für den Flatfile-Anbieter nach Auswahl der Datei unter der Eingabespaltenliste die Schaltfläche "Typen vorschlagen .." angezeigt. Nachdem Sie auf diese Schaltfläche geklickt haben, hat der Flat File-Anbieter die CSV-Quelldatei erneut abgefragt und die Länge der Felder in der Quelldatei korrekt ermittelt , auch wenn keine Änderungen am Dialogfeld "Verwenden" vorgenommen wurden .
Sobald dies erledigt war, wurde der Import ohne weitere Probleme fortgesetzt.
quelle
Ich denke, es ist ein Fehler. Bitte wenden Sie die Problemumgehung an und versuchen Sie es erneut: http://support.microsoft.com/kb/281517 .
Gehen Sie auch zur Registerkarte Erweitert und bestätigen Sie, ob die Länge der Zielspalten Varchar (max) ist.
quelle
Der erweiterte Editor hat mein Problem nicht behoben. Stattdessen musste ich die dtsx-Datei über den Editor (oder Ihren bevorzugten Text- / XML-Editor) bearbeiten und die Werte in den Attributen manuell ersetzen
length="0"
dataType="nText"
(Ich benutze Unicode)Erstellen Sie immer eine Sicherungskopie der dtsx-Datei, bevor Sie sie im Text- / XML-Modus bearbeiten.
Ausführen von SQL Server 2008 R2
quelle
Gehen Sie zur Registerkarte Erweitert ----> Datentyp der Spalte ---> Ändern Sie hier den Datentyp von DT_STR in DT_TEXT und die Spaltenbreite 255. Jetzt können Sie überprüfen, ob er einwandfrei funktioniert.
quelle
Problem: Der Jet OLE DB-Anbieter liest einen Registrierungsschlüssel, um zu bestimmen, wie viele Zeilen gelesen werden sollen, um den Typ der Quellenspalte zu erraten. Standardmäßig ist der Wert für diesen Schlüssel 8. Daher durchsucht der Anbieter die ersten 8 Zeilen der Quelldaten, um die Datentypen für die Spalten zu ermitteln. Wenn ein Feld wie Text aussieht und die Datenlänge mehr als 255 Zeichen beträgt, wird die Spalte als Notizfeld eingegeben. Wenn also in den ersten 8 Zeilen der Quelle keine Daten mit einer Länge von mehr als 255 Zeichen vorhanden sind, kann Jet die Art des Datentyps nicht genau bestimmen. Da die ersten 8 Zeilen mit Daten im exportierten Blatt weniger als 255 betragen, wird die Quelllänge als VARCHAR (255) betrachtet und es können keine Daten aus der Spalte mit größerer Länge gelesen werden.
Fix: Die Lösung besteht darin, die Kommentarspalte in absteigender Reihenfolge zu sortieren. Ab 2012 können wir die Werte auf der Registerkarte "Erweitert" im Importassistenten aktualisieren.
quelle