簡體   English   中英

從.NET SqlCommand調用時,SQL Server批量插入失敗

[英]SQL Server Bulk Insert failing when called from .NET SqlCommand

我有一個存儲過程,它在SQL Server 2005數據庫上進行批量插入。 當我從一些SQL(傳入本地格式文件和數據文件的名稱)調用此存儲過程時,它工作正常。 每次。

但是,當使用SqlCommand.ExecuteNonQuery從C#.NET 3.5代碼調用此相同的存儲過程時,它會間歇性地工作。

失敗時會生成SqlException ,說明:

無法批量加載。 格式文件“c:\\ bulkinsert \\ MyFile.fmt”中的列號無效

我不認為此錯誤消息是正確的。

從代碼調用批量插入有沒有人遇到過類似的問題?

謝謝。

你是如何進行批量插入的? 通常,問題(在這種情況下)是“c:\\”是服務器的“c:\\”,還是客戶端的“c:\\”。

然而。 從C#代碼開始,最簡單的方法是使用SqlBulkCopy 此類提供從托管代碼直接訪問批量插入功能,包括映射(盡管我從不打擾它們)。

如果文件類似於csv / tsv / similar,那么強烈建議使用CsvReader 這提供了WriteToServer最有效使用的IDataReader接口。

我認為這個問題與格式文件有關。 我不再使用格式文件,它現在似乎100%的工作。 我改為在SQL中指定字段和行終止符。

Declare @Sql Nvarchar(2000); 

SET @Sql = 
'Bulk Insert TestOutputPretest
From  ''c:\rawdata\bulkinsert\Segment1839204.dat''
 WITH 
      (
         FIELDTERMINATOR ='','',
         ROWTERMINATOR = ''\n''
      )'

Exec sp_ExecuteSql @Sql;

采用

Exec sp_ExecuteSql @Sql; (100%工作)

exec(@sql)不是很強大,因為它有一些限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM