加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【日记】利用VB.NET实现MYSQL和MSSQL进行批量插入记录的方法及比

发布时间:2020-12-16 22:16:00 所属栏目:大数据 来源:网络整理
导读:最近为了完成将股票交易数据从二进制文件读取添加到数据库中,可谓千辛万苦(以前数据量小,不需要考虑太多嘛) 言归正传:股票 交易数据格式为 ,股票代码,时间,交易数据,时间,交易数据 ..... 开始 另一只股票 的交易 代码和 数据。 如果是用 一条记录i

最近为了完成将股票交易数据从二进制文件读取添加到数据库中,可谓千辛万苦(以前数据量小,不需要考虑太多嘛)

言归正传:股票交易数据格式为,股票代码,时间,交易数据,时间,交易数据.....开始另一只股票的交易代码和数据。

如果是用一条记录insert一次,花费大量的时间。故而考虑用批量插入的方式。

【使用MYSQL数据库】

用MYSQL的REPLACE函数可以实现对数据的批量更新。

replace INTO `数据库名`.`表明` (`列名1`,`列名2`) VALUES (第1行值1,第1行值2),(第二行值1,第二行值2),();
测试过使用10000条记录插入一次,嘿嘿,速度还是很快的。

【使用MSSQL】

可以考虑用dataadpter的update功能(百度去查吧)或者是用下面的方法:

Dim bcp As System.Data.SqlClient.SqlBulkCopy = New SqlBulkCopy(MSconn)
bcp.DestinationTableName = "数据库名.表明"
If MSconn.State <> ConnectionState.Open Then MSconn.Open()
bcp.WriteToServer(msDT) ‘vb中的变量msDT(table类型)
If MSconn.State <> ConnectionState.Closed Then MSconn.Close()
但是。。。。

但是。。。。

【比较】
二者的比较不在于数据处理效率方面(因为我是菜鸟,无法比较数据处理效率),而在于如果插入到数据库中的数据如果使得主键重复了怎么办?如果使用MSSQL的方法,一旦出现重复,可能会提示错误,并且使得msDT表中的后续的数据无法更新到数据库中。(网上有人说可以在New SqlBulkCopy(MSconn)后面多加一个参数,但是我好像行不通

幸好MSSQL的replace在遇到重复记录的时候会使用更新的方法。(也就是不会报错而能把最新数据更新进去)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读