Sql Server中的批量插入错误 [英] Bulk Insert Error in Sql Server

查看:85
本文介绍了Sql Server中的批量插入错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我在Sql批量插入时收到以下异常。



我收到此错误

Hi
I am getting the following exception in Sql in bulk Insert.

I ma getting this error in

sqlCmd.ExecuteNonQuery();







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.
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".







Stroed程序是:






The Stroed Procedure is :

 IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[PSGTMS].[tmsp_CustomerContactInsert_CN]') AND type in (N'P', N'PC'))
DROP PROCEDURE [PSGTMS].[tmsp_CustomerContactInsert_CN]
GO
 
 --Exec PSGTMS.tmsp_CustomerContactInsert_CN '\\server65\CONBULKINSERT\CustomerContact.CSV',0 
 CREATE PROCEDURE [PSGTMS].[tmsp_CustomerContactInsert_CN]          
(      
	@filename  VARCHAR(255),          
	@retval    INT  OUTPUT          
)      
AS          
BEGIN           
SET NOCOUNT ON     
 DECLARE @stmt   NVARCHAR(MAX)     
 SET @retval  = 1    
IF OBJECT_ID('tempdb.dbo.#CustomerContact_CN') is not null          
  BEGIN           
   DROP TABLE #CustomerContact_CN          
  END        
  CREATE TABLE #CustomerContact_CN (    
	CustomerNumber	CHAR(10), 
	LastName		VARCHAR(30),
	FirstName		VARCHAR(15),
	Telephone		VARCHAR(16),
	Extension		VARCHAR(6),
	Fax				VARCHAR(16),
	EmailID			CHAR(63),
	[TYPE]			CHAR(3)
	
)       
SET @stmt = 'BULK INSERT #CustomerContact_CN FROM ' + '''' + @filename + '''' +          
    'WITH          
    (      
    	DATAFILETYPE =''widenative'',    
		CODEPAGE = ''RAW'',          
		FIELDTERMINATOR = '','',          
		ROWTERMINATOR = ''\n''
    )'          
   EXEC SP_EXECUTESQL @stmt      
       
   BEGIN TRANSACTION    
   INSERT INTO PSGAR.ARCustomerContact1     
  (      
	 CustomerNo,    
	 LastName,    
	 FirstName,    
	 Telephone,      
	 Extension,      
	 Fax,      
	 IN_EmailId,      
	 [Source]
	 
  )    
  SELECT     
	C.CustomerNumber,      
	ISNULL(C.LastName,''),      
	ISNULL(C.FirstName,''),     
	ISNULL(C.Telephone,''), 
	ISNULL(C.Extension,''),      
	ISNULL(C.Fax,''),      
	ISNULL(C.EmailID,''),      
	ISNULL(C.[TYPE],'')
   FROM #CustomerContact_CN C WITH(NOLOCK)    
   
     IF @@ERROR <> 0          
   BEGIN     
   SET @retval =0          
    ROLLBACK TRANSACTION          
   RETURN         
   END    
   SET @retval =1    
   COMMIT TRANSACTION     
SET NOCOUNT OFF  
END







样本CSV数据为:






The Sample CSV Data is:

000006    ,Payable,Accounts,3368012065,,9058126177,,AP
000006    ,McPherson,Peter,9058126084,,9058126018,,AP
000006    ,Payable,Accounts,,,6042640252,,AP
000008    ,Drunsic,Stephen,8023621516,7,,sdrunsic@nerr.com,EBL
000008    ,Scarlotta,Christine,8023621516,3,8023621918,,AP
000027    ,Freitas,Susan,,,9058791123,susan@vaughanwood.com,AP
000033    ,Cuthbertson,Gayle,8016492090,,,gaylec@energysolutions.com,EBL
000033    ,Olson,Milo,8016492274,,,molson@energysolutions.com,EBL
000042    ,Shivji,Hafiz,4032796267,101,,accounting@classicfoodsltd.com,EBL
000042    ,Payable,Accounts,,,4032796515,accounting@classicfoodsltd.com,AP
000042    ,SHIVJI,ABID,,,4032796515,,AP
000043    ,Clausen,Larry,7084582626,,,larry@combinedwarehouse.com,EBL
000043    ,Payable,Accounts,,,7084582691,,AP
000043    ,Castaldo,Skip,,,7084582691,skip@combinedwarehouse.com,AP
000045    ,Payable,Accounts,,,4032123697,,AP
000045    ,Payable,Accounts,4036404230,,4032123724,,AP
000046    ,Stelter,Rich,,,7084964158,,AP
000046    ,Payable,Accounts,7084962485,,7084964158,,AP
000049    ,Terrio,Sandra,5146316000,,,sterrio@advantex.ca,EBL
000049    ,Richard,Mike,5146316000,,,mrichard@advantex.ca,EBL

推荐答案

在此找到您的问题





http://stackoverflow.com/questions/8513943/sql-server-the-bulk-load-failed-the-column-is-too-long-in-the-data-file -for-ro [ ^ ]
Find Your Problem on this


http://stackoverflow.com/questions/8513943/sql-server-the-bulk-load-failed-the-column-is-too-long-in-the-data-file-for-ro[^]


这篇关于Sql Server中的批量插入错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆