2013-01-16 14 views
13

Ich versuche, den folgenden Befehl, um Masseneinfügung von Daten aus einer CSV file--„Spalte ist zu lang“ Fehler mit Bulk

BULK INSERT TestDB.dbo.patent 
FROM 'C:\1patents.csv' 
WITH (FIRSTROW = 1, FIELDTERMINATOR = '^', ROWTERMINATOR='\n'); 

Der Fehler I ist this--

bin immer zu laufen

Msg 4866, Ebene 16, Status 1, Zeile 1
Die Massenladung ist fehlgeschlagen. Die Spalte ist in der Datendatei für Zeile 1, Spalte 6 zu lang.
Überprüfen Sie, ob Feldterminator und Zeilenabschluss korrekt angegeben sind.
Msg 7399, Ebene 16, Status 1, Zeile 1
Der OLE DB-Provider "BULK" für Verbindungsserver "(null)" meldete einen Fehler. Der Anbieter hat keine Informationen über den Fehler angegeben.
Msg 7330, Ebene 16, Status 2, Zeile 1
Es kann keine Zeile vom OLE DB-Provider "BULK" für den Verbindungsserver "(null)" abgerufen werden.

Nun ist dies die Daten in der ersten row--

00000001^^18360713^295^4^0 

Und in der Tabelle das letzte Feld (entspr. Der 6. Spalte von Daten über = 0) ist vom Typ ‚int ".

Was mache ich hier falsch? Warum erhalte ich den obigen Fehler?

+1

Normalerweise sind Probleme mit den Zeilentrennzeichen. Überprüfen Sie Ihre Begrenzer ordnungsgemäß. –

Antwort

2

Es sei denn, die Dateiquelle Unix ist, stehen die Chancen, die Zeilenabschluss der Datei ist wirklich

\ r \ n

Entweder einen Hex-Editor verwenden, die Datei-Terminator zu validieren, oder versuchen Sie nur, dass als Zeilenabschlusszeichen.

+0

Ich habe versucht, den von Ihnen vorgeschlagenen Terminator zu verwenden - aber immer noch denselben Fehler? Bitte lassen Sie mich wissen, wenn Sie weitere Ideen haben, um dieses Problem zu lösen ... Danke .... – Arvind

+12

Eine Antwort hier: http://StackOverflow.com/a/4207050/706578 schlägt vor, ROWTERMINATOR = '0x0a' wenn '\ n'or '\ r \ n' funktioniert nicht für dich. Es hat für mich funktioniert! –

29

Ich habe Extraktion von Oracle/Unix. Ich ersetzte \r\n durch ROWTERMINATOR = '0x0a' und es funktionierte für mich.
Vielen Dank!

+0

Das hat für mich funktioniert. Vielen Dank (: – Sonu

13

Wie oben beantwortet, hatte ich das gleiche Problem beim Importieren einer CSV-Datei in SQL Server. Ich benutzte ROWTERMINATOR = '\n' und ich versuchte auch, '\r\n' und '\r' zu verwenden. Keine von ihnen hat funktioniert.

Aber mit ROWTERMINATOR = '0x0a' die Tabelle ohne Probleme geladen.

Ich weiß nicht, warum? Dahinter kann hoffentlich jemand anderes Licht darüber werfen.

0

Ich konfrontiert das ähnliche Problem und kam zu wissen, dass, wenn die Datei UNIX-Typ ist \ r \ n ist in Ordnung.

Wenn Sie die Formatdatei erstellen (.fmt oder .xml), beachten Sie die dritte Spalte von links. es heißt min Länge der Spalte. Zu Zeiten sql Server standardmäßig auf obwohl Sie es nicht in create-Skript erwähnen. Ändern Sie diesen Wert in .Manchmal müssen Sie vielleicht auch NULL zulassen, also ändern Sie das auf Null und es sollte jetzt funktionieren.

Verwandte Themen