C#中如何将DataTable保存到数据库?
C#中,比如有个DataTbaleA,几万行数据,怎么样快速的把DataTbaleA保存到数据库中,并且数据库创建好一个DataTbaleA名字的表,用INSERT需要一...
C#中,比如有个DataTbaleA,几万行数据,怎么样快速的把DataTbaleA保存到数据库中,并且数据库创建好一个DataTbaleA名字的表,用INSERT需要一条一条保存,效率太慢。
额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢? 展开
额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢? 展开
展开全部
sqlbulkcopy 神级 数据拷贝
System.Data.SqlClient 命名空间
亲测,100万 数据 20字段 5000毫秒 (5秒)
public void InsertDatatable(Datatable datatableA)
{
SqlConnection destinationConnection = new SqlConnection(connectionString) //创建一个数据库连接;
destinationConnection.Open();
SqlBulkCopy bulkCopy =new SqlBulkCopy(destinationConnection)// 实例化 sqlbulkcopy;
bulkCopy.DestinationTableName ="dbo.DatatableA";// 目标表名称/
///bulkCopy.ColumnMappings.Add("ProductID", "ProductID");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
///bulkCopy.ColumnMappings.Add("ProductName", "Name");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
bulkCopy.WriteToServer(datatableA);//将传入的数据写到数据库;
}
目标表名 如果在数据库中不存在, 二十需要插入数据时再生成的话,就需要在执行这个 插入之前,先建一张表
string sql="create table xxxxxxx( filed1 varchar(100),........ )" 建好之后再 插入数据 就可以了 。
System.Data.SqlClient 命名空间
亲测,100万 数据 20字段 5000毫秒 (5秒)
public void InsertDatatable(Datatable datatableA)
{
SqlConnection destinationConnection = new SqlConnection(connectionString) //创建一个数据库连接;
destinationConnection.Open();
SqlBulkCopy bulkCopy =new SqlBulkCopy(destinationConnection)// 实例化 sqlbulkcopy;
bulkCopy.DestinationTableName ="dbo.DatatableA";// 目标表名称/
///bulkCopy.ColumnMappings.Add("ProductID", "ProductID");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
///bulkCopy.ColumnMappings.Add("ProductName", "Name");//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
bulkCopy.WriteToServer(datatableA);//将传入的数据写到数据库;
}
目标表名 如果在数据库中不存在, 二十需要插入数据时再生成的话,就需要在执行这个 插入之前,先建一张表
string sql="create table xxxxxxx( filed1 varchar(100),........ )" 建好之后再 插入数据 就可以了 。
追问
额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用
10
楼
charles_y
的回复:是sql
server
吗?bulkcopy
插入到一个临时表然后用Merge
把临时表合并到表中。合并可以判断是插入还是修改,具体参考Merge语句
10
楼
charles_y
的回复:是sql
server
吗?bulkcopy
插入到一个临时表然后用Merge
把临时表合并到表中。合并可以判断是插入还是修改,具体参考Merge语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用
2
楼
wjq
的回复:创建零时表Blukcopy,把dt导入零时表select
insert和原表关联后再插入
2
楼
wjq
的回复:创建零时表Blukcopy,把dt导入零时表select
insert和原表关联后再插入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bulk insert 参见
http://kb.cnblogs.com/page/73491/
http://kb.cnblogs.com/page/73491/
更多追问追答
追问
额。但是如果我是Access数据库,用不了SqlBulkCopy ,怎么办呢?
追答
其实一条一条insert也效率不低的,如果你的代码是每次插入创建一个新连接那就效率低了(你的是不是?)。可以参考下面的代码
http://stackoverflow.com/questions/7070011/writing-large-number-of-records-bulk-insert-to-access-in-net-c
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |