2012-09-07 3 views
0

j'ai écrit une requête pour insérer des données à partir du fichier .lst nom de la table AxisATM Mais quand j'essaie de l'insérer me donne erreuren vrac Insérer plusieurs tuyaux de données dans le tableau

QUAND JE supprime toutes les lignes à partir du fichier LST sauf d'abord ..Il me donne le succès msg dire 1 lignes modifiées ..

Msg 4866, Level 16, State 1, Line 1 
The bulk load failed. The column is too long in the data file for row 1, column 36. Verify that the field terminator and row terminator are specified correctly. 
Msg 7399, Level 16, State 1, Line 1 
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. 
Msg 7330, Level 16, State 2, Line 1 
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)". 

requête: -

BULK 
INSERT dbo.ATMAxis 
FROM 'c:\AGS_WINCORE_120901.lst' 
WITH 
(
FIELDTERMINATOR = '|', 
ROWTERMINATOR = 'CHAR(13)' 
) 
GO 

AGS_WINCORE_120901.lst: -

PRO1|......|00000000000|0| {Like it has 36 '|' separators} 

En utilisant Notepad ++ Je sais que la ligne End Les personnages sont CR LF

Répondre

2

Comme prévu, le problème réside dans

ROWTERMINATOR = 'CHAR(13)' 

Je l'ai changé pour

ROWTERMINATOR = '0x0A' 
+0

Merci. Cela me rendait fou! – HarveyFrench

0

Comme l'erreur dit colonne 36 a plus chanracters que celui de la colonne 36 de la colonne de la table. Vous devez augmenter la taille de cette colonne

+0

Je suppose que ROWTERMINATOR = '\ r \ n' est crée problème. ont-ils raison si CR & LF Impression dans NotePad ++ –

0

Il semble que la terminaison de ligne crée un problème. Si c'est le cas, essayez de remplacer /r/n par Char(10) cela résoudra le problème. Vérifiez également char(13).

This MSDN thread a plus d'informations.

+0

J'ai essayé à la fois 'CHAR (13)' & 'CHAR (10)' ainsi que 'CHAR (13) + CHAR (10)' ... mais rien ne semble fonctionner –