2013-01-16 4 views
13

Sto cercando di eseguire il seguente comando per i dati inserimento di massa da un file CSV file--"Colonna è troppo lungo" l'errore con BULK INSERT

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

L'errore che sto ottenendo è questo--

messaggio 4866, livello 16, stato 1, riga 1
Il caricamento di massa non è riuscito. La colonna è troppo lunga nel file di dati per la riga 1, colonna 6.
Verificare che il terminatore di campo e il terminatore di riga siano specificati correttamente.
messaggio 7399, livello 16, stato 1, riga 1
Il provider OLE DB "BULK" per server collegato "(null)" ha segnalato un errore. Il provider non ha fornito alcuna informazione sull'errore.
messaggio 7330, livello 16, stato 2, riga 1
Impossibile recuperare una riga dal provider OLE DB "BULK" per server collegato "(null)".

Ora Questi sono i dati del primo row--

00000001^^18360713^295^4^0 

E nella tabella l'ultimo campo (corrisp. Al 6 colonna di dati di cui sopra = 0) è di tipo 'int '.

Cosa sto facendo di sbagliato qui? Perché ricevo l'errore sopra riportato?

+1

Generalmente i problemi riguardano i delimitatori di riga. Controlla i tuoi delimitatori correttamente. –

risposta

2

A meno che l'origine del file è Unix, è probabile che fila terminatore del file è davvero

\ r \ n

utilizzare un editor esadecimale per convalidare terminatore del file, o semplicemente provare che come terminatore di riga.

+0

Ho provato a utilizzare il terminatore suggerito da te, ma sto ancora ottenendo lo stesso errore? Per favore fatemi sapere se avete altre idee per risolvere questo ... grazie .... – Arvind

+12

Una risposta qui: http://stackoverflow.com/a/4207050/706578 suggerisce di usare ROWTERMINATOR = '0x0a' se '\ n'o '\ r \ n' non funziona per te. Ha funzionato per me! –

29

Ho ottenuto l'estrazione da Oracle/Unix. Ho sostituito \r\n per ROWTERMINATOR = '0x0a' e ha funzionato per me.
Grazie mille!

+0

Questo ha funzionato per me. Grazie (: – Sonu

13

Come sopra risposto, ho avuto lo stesso problema importando un file CSV in SQL Server. Stavo usando ROWTERMINATOR = '\n' e ho anche provato a usare '\r\n' e '\r'. Nessuno di loro ha funzionato.

Ma quando si utilizza ROWTERMINATOR = '0x0a' la tabella caricata senza problemi.

Non conosco il "perché?" dietro a questo, si spera che qualcun altro possa far luce su di esso.

0

Ho affrontato il problema simile e mi sono reso conto che, a meno che il file non sia UNIX, digitare \ r \ n.

Quando si genera il file di formato (.fmt o .xml), notare la terza colonna da sinistra. è chiamato min lunghezza di colonna. A volte SQL Server lo imposta automaticamente su sebbene non lo menzioni nello script di creazione. Modificare quel valore in .A volte potresti dover consentire anche NULL, quindi cambialo a zero e dovrebbe funzionare ora