[英]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.