我想在我的数据库中插入10000+行快速(我尝试了linqtosql,花了我2分多钟),并在互联网上的研究后,我发现了有关SQL批量复制,但我并不真正了解它。有人能给我一个很好的例子吗? 我填写从.csv文件列表,所以我所有的数据都在此在asp.net中的sql批量插入c#
List<myTable> datalist = new List<myTable>();
我也有为了执行SQL事务的上下文。
我想在我的数据库中插入10000+行快速(我尝试了linqtosql,花了我2分多钟),并在互联网上的研究后,我发现了有关SQL批量复制,但我并不真正了解它。有人能给我一个很好的例子吗? 我填写从.csv文件列表,所以我所有的数据都在此在asp.net中的sql批量插入c#
List<myTable> datalist = new List<myTable>();
我也有为了执行SQL事务的上下文。
要使用SqlBulkCopy
您需要DataTable
或IDataReader
。如果你有一个List<T>
,仍然可以正常工作 - 通过工具,如FastMember这使得从对象序列的IDataReader
,例如:
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
(明显的地方使用datalist
的data
;字符串之后是成员映射到列 - 你可以在最新版本的C#代替"Id"
这里使用nameof
,即nameof(myTable.Id)
)
如果您想直接从CSV没有List<T>
中间工作,CsvReader会更合适。
“名称'ObjectReader'在当前上下文中不存在' –
@ L.Achilles是的,这是一个使用FastMember的例子 - 使用它你需要从nuget安装FastMember –
哦,不幸的是我无法下载新的nuget软件包,因为我无法通过该PC访问任何互联网。 –
检查教程,使用新数据库创建新项目并执行批量复制。理解了本教程后,开始在您的案例中实施它。 – mybirthname
真正有用的建议lol –