为了在数据库中插入大量数据,我曾经将所有插入信息收集到列表中并将此列表转换为a DataTable.然后我通过将该列表插入数据库SqlBulkCopy.
我发送生成的列表LiMyList
,其中包含我要插入数据库的所有批量数据的信息,并将其
传递给我的批量插入操作
InsertData(LiMyList, "MyTable");
Run Code Online (Sandbox Code Playgroud)
哪里InsertData是
public static void InsertData<T>(List<T> list,string TableName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TableName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data) …Run Code Online (Sandbox Code Playgroud) 我需要定期更新一个非常大的表,SQLBulkCopy是完美的,只有我有一个2列索引,可以防止重复.有没有办法使用SQLBulkCopy作为"插入或更新,如果存在"?
如果没有,最有效的方法是什么?我再次谈论一张包含数百万条记录的表格.
谢谢
我有一个带记录的数据表.我正在使用SqlBulkCopy将记录插入到Sql表中.它运行正常.下一次获取具有相同记录且几乎没有更改值的数据表时,SqlBulkCopy正在插入另一组记录而不更新以前的详细信息.如何我可以使用SqlBulkCopy更新Sql表吗?请帮忙.
谢谢,Vix
我有一个程序正在读取文本文件来更新/插入行.我在下面尝试了以下伪代码方法.这些都非常慢.我直接在SQL Server本身上运行此代码,这些过程都需要花费数小时才能完成...
更新/插入语句的数量大约为数百万.在.net c#中运行那么多SQL语句的最有效方法是什么?
// Insert/Update while reading text file
While (reader.read)
{
sql.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
要么...
// build a list to loop through later and insert/update
While (reader.read)
{
List.Add(sql);
}
foreach(string s in sql)
{
sql.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
要么...
// Build a list and run 1000 statements at one time
While (reader.read)
{
List.Add(sql);
if(List.Count == 1000)
{
sql.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
sql ×2
sql-server ×2
asp.net ×1
bigdata ×1
bulk ×1
insert ×1
performance ×1
sqlbulkcopy ×1