Foxtable(狐表)用户栏目专家坐堂 → [求助]SqlBulkCopy插入数据时加个条件


  共有2766人关注过本帖树形打印复制链接

主题:[求助]SqlBulkCopy插入数据时加个条件

帅哥哟,离线,有人找我吗?
天一生水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]SqlBulkCopy插入数据时加个条件  发帖心情 Post By:2020/5/21 20:24:00 [只看该作者]

老师,在利用SqlBulkCopy将 本地表"导入数据"   插入到 sql外部数据表"股piao日线"   时,希望如果“代码”和“日期”都相同的行就不插入。请老师看一下第二段代码对不对?

谢谢!

 

’1、SqlBulkCopy代码

Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("server=voyo;uid=sa;pwd=hailun.;database=Test")
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    For Each dc As DataCol In DataTables("导入数据").datacols
        Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping(dc.name, dc.name)
        Copy.ColumnMappings.Add(mapping1)
    Next
    copy.Destinati      '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("导入数据").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
   
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

 

2、添加条件代码

For Each dr As DataRow In DataTables("导入数据").DataRows
    Dim pr As DataRow
    With DataTables("股piao日线")
        pr = .SQLFind("代码 = '" & dr("代码") & "'and 日期 = '" & dr("日期") & "'")
    End With
   
    If pr Is Nothing Then

 

         。。。。。。(加入上面的)SqlBulkCopy代码

 

    End If  
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/21 21:10:00 [只看该作者]

SqlBulkCopy是整表处理的,只能用于导入新增数据。如果对已有的数据更改是无法使用的。如果要去重,先遍历表格,把相同的数据删除掉。

或者导入数据库后在使用sql去重,比如:delete from {股piao信息明细表} where [_Identify] not In (Select min([_Identify]) As id from {股piao信息明细表} group by 代码,时间)

 回到顶部