2016-03-30 7 views
0

Ich habe diesen kleinen SQL-Skript ein Semikolon getrennt Datei in eine bestimmte Tabelle meiner Datenbank zu importieren:Masseneinsatz bricht, wenn DATAFILETYPE Zugabe = ‚widenative‘

BULK 
INSERT foo_bar 
FROM 'C:\Users\JohnDoe\projects\foo\ftp-data-importator\bar.txt' 
WITH 
(
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n', 
FIRSTROW = 2, 
MAXERRORS = 100000, 
ERRORFILE = 'c:\temp\foobar_bulk_log.txt' 
) 
GO 

Und es ist wie ein Zauber funktioniert. Das einzige Problem ist, dass einige spezielle Unicode-Zeichen wie ó oder é wegen der Kodierung der Datei nicht eingefügt werden.

So habe ich die nächste Zeile zwischen dem Schlüsselwort Klammern MIT:

DATAFILETYPE = 'widenative'

Und statt die Codierung zu respektieren wird die gesamte Ausführung zu brechen und mir den nächsten Fehler geben:

Msg 4866, Level 16, State 5, Line 5 The bulk load failed. The column is too long in the data file for row 1, column 1. Verify that the field terminator and row terminator are specified correctly. Msg 7301, Level 16, State 2, Line 5 Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".

Wo ist das Problem?

+0

Ich würde nie denken, SQL Server Bulk-Einsatz funktioniert wie ein Charme, aber manchmal tut es auch. Ist Ihre Datei wirklich eine Unicode-Datei mit einer Byte-Reihenfolge? Selbst in diesem Fall hatte ich Probleme mit SQL Server. Wenn Ihre Datei ein ANSI-Text ist, versuchen Sie anstelle von DataFileType CodePage = 1250 zu verwenden. BTW, mit Unicode würden Sie widechar verwenden. –

+0

Danke! Ich löste es, indem ich die Zeile 'DATAFILETYPE = 'widenative' mit' CodePage = 1252' ersetzte. Veröffentlichen Sie den Kommentar als Antwort, wenn Sie möchten. Du hast in die richtige Richtung gewirkt. – VictorArcas

Antwort

1

Anstelle von DataFileType versuchen Sie CODEPAGE = 1252.

1

Versuchen Sie, widechar statt widenative anzugeben Ihre ursprüngliche Anweisung verwendet Zeichenmodus, nicht natives BCP-Format. Stellen Sie außerdem sicher, dass die Quelldatei Unicode (nicht UTF-8) ist.

+0

Also, wenn ich eine UTF-8-Datei importieren möchte? Was muss ich tun? – VictorArcas

+0

@ PicaCodigo, UTF-8-Unterstützung wird in SQL 2016 eingeführt. Siehe https://msdn.microsoft.com/en-us/library/ms188365.aspx. –

Verwandte Themen