it-swarm.com.de

Text wurde abgeschnitten oder ein oder mehrere Zeichen stimmen in der Ziel-Codepage nicht überein, einschließlich des Primärschlüssels in einem Unpivot

Ich versuche, eine flache Datei in eine Oledb-Ziel-SQL-Serverdatenbank zu importieren.

hier ist das Feld, das mir Mühe gibt:

enter image description here

hier sind die Eigenschaften dieser Flatfile-Verbindung, insbesondere das Feld:

enter image description here

hier ist die Fehlermeldung:

[Quelle - 18942979103_txt [424]] Fehler: Datenkonvertierung fehlgeschlagen. Das Datenkonvertierung für Spalte "Empfängername" lieferte Statuswert 4 und Statustext "Text wurde abgeschnitten oder ein oder mehrere Zeichen hatten keine -Übereinstimmung in der Ziel-Codepage.".

Was mache ich falsch?

Ich weiß, das ist eine alte Frage. Wie ich es gelöst habe - nachdem ich die Länge vergrßert oder sogar den Datentyp Text geändert hatte - war das Erstellen einer XLSX-Datei und das Importieren der Datei der Fall. Er hat den Datentyp genau erkannt, anstatt alle Spalten als varchar (50) festzulegen. Es stellt sich heraus, dass nvharchar (255) für diese Spalte dies auch getan hätte.

18
Chookoos

Hier ist das Problem für mich behoben. Ich musste nicht nach Excel konvertieren. Ändern Sie einfach den Datentyp, wenn Sie die Datenquelle auf "Textstream" (Abbildung 1) setzen. Sie können auch das Dialogfeld "Zuordnungen bearbeiten" überprüfen, um die Änderung der Größe zu überprüfen (Abbildung 2).

Abbildung 1

 enter image description here

Figur 2

 enter image description here

21
ADH

Ich habe dieses Problem durch BESTELLEN meiner Quelldaten (xls, csv, was auch immer) gelöst, so dass der längste Text oben in der Datei angezeigt wird. Excel ist großartig. Verwenden Sie die LEN () - Funktion in Ihrer herausfordernden Kolumne. Bestellen Sie nach diesem Längenwert mit dem längsten Wert über Ihrem Datensatz. Sparen. Versuchen Sie den Import erneut. 

13
Eric Hrnicek

SQL Server ist möglicherweise in der Lage, den richtigen Datentyp für Sie vorzuschlagen (selbst wenn er nicht standardmäßig den richtigen Typ auswählt). Wenn Sie auf die Schaltfläche "Suggest Types" (siehe Abbildung oben) klicken, können Sie die Quelle von SQL Server überprüfen lassen und schlagen Sie einen Datentyp für das Feld vor, das einen Fehler auslöst. In meinem Fall habe ich das Problem behoben, indem Sie 20000 Zeilen gescannt haben, um die Vorschläge zu generieren, und den resultierenden vorgeschlagenen Datentyp verwenden.

6
user756366

Nicht wirklich eine technische Lösung, aber der SQL Server 2017-Import von Flatfiles wurde komplett überarbeitet und importierte meine große Datei mit 5 Klicks, wobei Kodierungs-/Feldlängenprobleme ohne meine Eingabe behandelt wurden

enter image description here

2
Matthew Evans

Der SQl Management Studio-Datenimport prüft die ersten Zeilen, um die Quelldatenspezifikationen zu ermitteln.

verschieben Sie Ihre Datensätze so, dass der längste Text oben steht.

2
Pinch

Ich hatte ein ähnliches Problem mit 2 verschiedenen Datenbanken (DB2 und SQL) und löste es schließlich mit CAST in der Quellabfrage von DB2. Ich nutze auch die Verwendung einer Abfrage, indem ich die Quellspalte an varchar anpasse und die nutzlosen Leerzeichen vermeide: 

CAST(RTRIM(LTRIM(COLUMN_NAME)) AS VARCHAR(60) CCSID UNICODE 
   FOR SBCS DATA)  COLUMN_NAME

Das wichtige Thema hierbei ist die CCSID-Konvertierung.

1
JossWs

Ich habe das Problem durch Aktivieren des Kontrollkästchens "UNICODE" behoben. Klicken Sie unten auf den Bildlink:

Image


1
Anand Bhosekar

Keines der oben genannten Dinge funktionierte für mich. Ich habe mein Problem durch das Speichern meiner Quelldaten (Speichern unter) als Excel-Datei als einzelnes Arbeitsblatt Excel 5.0/95 gelöst und ohne Spaltenüberschriften importiert. Außerdem habe ich die Tabelle im Voraus erstellt und manuell zugeordnet, anstatt die Tabelle von SQL erstellen zu lassen.

0
TonyE

Normalerweise, weil es im Verbindungsmanager immer noch 50 Zeichen hat. Daher habe ich das Problem gelöst, indem ich zu Verbindungsmanager -> Erweitert gegangen bin und dann zu 100 gewechselt habe, oder 1000, wenn es groß genug ist

0
user11791703

Während ein oben vorgeschlagener Ansatz (@chookoos, hier in diesem Q & A in Excel-Arbeitsmappe konvertieren) und beim Importieren dieser Art von Problemen gelöst wird, ist diese Lösung diese Lösung in einem anderen Q & A - hervorragend, da Sie bei Ihrer csv bleiben können oder tsv- oder txt-Datei, und führen Sie die erforderliche Feinabstimmung durch, ohne eine Microsoft-Produktlösung zu erstellen  enter image description here  enter image description here

0
Albert