2017-07-07 75 views
-3

我想在我的数据库中插入10000+行快速(我尝试了linqtosql,花了我2​​分多钟),并在互联网上的研究后,我发现了有关SQL批量复制,但我并不真正了解它。有人能给我一个很好的例子吗? 我填写从.csv文件列表,所以我所有的数据都在此在asp.net中的sql批量插入c#

List<myTable> datalist = new List<myTable>(); 

我也有为了执行SQL事务的上下文。

+0

检查教程,使用新数据库创建新项目并执行批量复制。理解了本教程后,开始在您的案例中实施它。 – mybirthname

+0

真正有用的建议lol –

回答

1

要使用SqlBulkCopy您需要DataTableIDataReader。如果你有一个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); 
} 

(明显的地方使用datalistdata;字符串之后是成员映射到列 - 你可以在最新版本的C#代替"Id"这里使用nameof,即nameof(myTable.Id)

如果您想直接从CSV没有List<T>中间工作,CsvReader会更合适。

+0

“名称'ObjectReader'在当前上下文中不存在' –

+0

@ L.Achilles是的,这是一个使用FastMember的例子 - 使用它你需要从nuget安装FastMember –

+0

哦,不幸的是我无法下载新的nuget软件包,因为我无法通过该PC访问任何互联网。 –