2013-01-16 31 views
13

Próbuję uruchomić następujące polecenie, aby zbiorczych danych Wstaw z pliku CSV file--„Kolumna jest zbyt długi” Błąd z BULK INSERT

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

Błąd Dostaję jest this--

Msg 4866, poziom 16, stan 1, linia 1
Ładowanie zbiorcze nie powiodło się. Kolumna jest zbyt długa w pliku danych dla wiersza 1, kolumna 6.
Sprawdź, czy terminator pola i terminator wiersza zostały poprawnie określone.
Msg 7399, Poziom 16, Stan 1, Linia 1
Dostawca OLE DB "BULK" dla serwera połączonego "(null)" zgłosił błąd. Dostawca nie podał żadnych informacji o błędzie.
Msg 7330, poziom 16, Stan 2, wiersz 1
Nie można pobrać wiersza z dostawcy OLE DB "BULK" dla połączonego serwera "(null)".

teraz to dane w pierwszym row--

00000001^^18360713^295^4^0 

A w tabeli ostatnim polu (CORRESP. W 6 kolumnie w powyższych danych = 0) jest typu „Int ".

Co ja tu robię źle? Dlaczego otrzymuję powyższy błąd?

+1

Zazwyczaj problemy są z ogranicznikami wierszy. Sprawdź poprawnie ograniczniki. –

Odpowiedz

2

Jeżeli źródło plik jest Unix, są szanse, rząd Terminator plik jest naprawdę

\ r \ n

Albo użyć edytora hex do sprawdzania terminator pliku, lub po prostu spróbować, jako terminator wierszy.

+0

Próbowałem użyć zaproponowanego przez ciebie terminatora - ale wciąż otrzymuję ten sam błąd? Pls daj mi znać, jeśli masz jakiekolwiek pomysły, które pomogą rozwiązać ten ... dzięki .... – Arvind

+12

Odpowiedź tutaj: http://stackoverflow.com/a/4207050/706578 sugeruje użycie ROWTERMINATOR = „0x0a” if „\ n'or '\ r \ n' nie działa dla ciebie. To zadziałało dla mnie! –

29

Dostałem ekstrakcję z Oracle/Unix. Zastąpiłem \r\n przez ROWTERMINATOR = '0x0a' i zadziałało dla mnie.
Wielkie dzięki!

+0

To zadziałało dla mnie. Dzięki (: – Sonu

13

Tak jak odpowiedziałem powyżej, miałem ten sam problem z importowaniem pliku csv do SQL Server. Używałem ROWTERMINATOR = '\n' i próbowałem również użyć '\r\n' i '\r'. Żadne z nich nie działało.

Ale przy użyciu ROWTERMINATOR = '0x0a' tabela ładowana bez problemów.

Nie wiem, "dlaczego?" za tym, mam nadzieję, ktoś inny może rzucić na to światło.

0

Napotkałem podobny problem i dowiedziałem się, że jeśli plik nie jest typu UNIX, to \ r \ n jest w porządku.

Po wygenerowaniu pliku formatu (.fmt lub .xml) zwróć uwagę na trzecią kolumnę od lewej. jego nazwa to min. długość kolumny. Czasami domyślnie serwer sql to , ale nie wymienia się go w skrypcie tworzenia. Zmień tę wartość na .Czasami trzeba pozwolić NULL też, więc to zmienić na zero i to powinno działać teraz

Powiązane problemy