【发布时间】:2018-07-19 08:10:11
【问题描述】:
我正在使用以下函数将数据从 CSV 上传到 SQL 表。
有没有更好的方法?
我担心,现在,连接会保持很长时间。因此需要减少。
public bool SaveProxyBulkUploadData(List<AddServerPError> saveBulkUploadData)
{
try
{
foreach (AddServerPError addServetData in saveBulkUploadData)
{
DbCommand dbCmd = CitiScriptExecutionDB.GetStoredProcCommand("USP_HS_InsertProxyBulkUploadData");
CitiScriptExecutionDB.AddInParameter(dbCmd, "@groupid", DbType.String, addServetData.GroupId);
CitiScriptExecutionDB.AddInParameter(dbCmd, "@proxyname", DbType.String, addServetData.ProxyName);
CitiScriptExecutionDB.AddInParameter(dbCmd, "@proxytype", DbType.String, addServetData.ProxyType);
CitiScriptExecutionDB.AddInParameter(dbCmd, "@sa_spoc_dl", DbType.String, addServetData.SA_SPOC_DL);
CitiScriptExecutionDB.AddInParameter(dbCmd, "@assignmentgroup", DbType.String, addServetData.AssignmentGroup);
CitiScriptExecutionDB.AddInParameter(dbCmd, "@createdby", DbType.String, addServetData.CreatedBy);
CitiScriptExecutionDB.ExecuteNonQuery(dbCmd);
}
return true;
}
catch (Exception ex)
{
string msg = ex.Message + ex.StackTrace;
throw;
}
}
存储过程
CREATE PROCEDURE USP_HS_InsertBulkUploadData
@groupid int,
@hostname varchar(50),
@type1 varchar(50),
@type2 varchar(50),
@createdby varchar(50)
AS
BEGIN
Insert into [dbo].[EUCUsecaseGroupInputParam]
(
GroupId,
HostName,
Type1,
Type2,
CreatedBy,
CreatedDate,
UpdatedBy,
UpdatedDate,
IsActive
)
Values(
@groupId,
@hostname,
@type1,
@type2,
@createdby,
GetDate(),
null,
null,
1
)
END
【问题讨论】:
-
考虑使用
SqlBulkCopy- stackoverflow.com/questions/5052958/… -
有两种方法可以做到这一点。一个是
SqlBulkCopy,另一个是Table Value Parameter。
标签: c# sql .net sql-server sqlbulkcopy