Foxtable(狐表)用户栏目专家坐堂 → 狐表SQL数据库 可以使用SqlBulkCopy么?


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

主题:狐表SQL数据库 可以使用SqlBulkCopy么?

帅哥哟,离线,有人找我吗?
李小胖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
狐表SQL数据库 可以使用SqlBulkCopy么?  发帖心情 Post By:2017/11/2 18:28:00 [只看该作者]

如果能 麻烦些个范本?  我要一次性插入上千条数据.每条数据只修改其中一个字段

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 19:42:00 [只看该作者]

1、你要插入还是修改数据?插入数据,是新增一行;修改数据,是修改本来已经存在的数据。

 

2、SqlBulkCopy是用来新增数据的,不是用来修改数据的。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 19:43:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
李小胖
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/11/3 8:41:00 [只看该作者]

以下是引用有点甜在2017/11/2 19:42:00的发言:

1、你要插入还是修改数据?插入数据,是新增一行;修改数据,是修改本来已经存在的数据。

 

2、SqlBulkCopy是用来新增数据的,不是用来修改数据的。

我就是用来新增数据的,新增的行.其中只有一个字段数据不一样,其他都一样


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/3 8:45:00 [只看该作者]

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 mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列") '改为自己的列名,有多少列就增加多少个
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第二列", "第二列")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.DestinationTableName = "表D" '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("表D").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

 回到顶部
帅哥哟,离线,有人找我吗?
李小胖
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/11/3 10:03:00 [只看该作者]

以下是引用有点甜在2017/11/3 8:45:00的发言:
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 mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列") '改为自己的列名,有多少列就增加多少个
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第二列", "第二列")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.DestinationTableName = "表D" '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("表D").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

老师 您写得太深奥 没看明白Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列") '改为自己的列名,有多少列就增加多少个


实例 如下
    字段1  行为      字段2 时间        
                    吃饭                2017.11.3
                    吃饭                2017.11.4
                    吃饭                 2017.11.5
存储速度越快越好
这样的字段来一千条, 存储到 SQL 服务器上去..老师能帮忙写下实例么?   字段2 时间  每行增加1天

[此贴子已经被作者于2017/11/3 10:07:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李小胖
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/11/3 10:43:00 [只看该作者]

Dim conn As new System.Data.SqlClient.SqlConnection("server=voyo;uid=sa;pwd=hailun.;database=Test") '改为自己数据库的连接字符串

连接字符串怎么转换啊?
不能直接用狐表的连接字符串么?
我的字符串如下,请帮忙转换下

Provider=SQLOLEDB.1;Password=123d;Persist Security Info=True;User ID=456;Initial Catalog=789;Data Source=110.110.110.110,14399

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/11/3 11:53:00 [只看该作者]

Dim conn As new System.Data.SqlClient.SqlConnection("server=110.110.110.110,14399;uid=456;pwd=123d.;database=789")

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


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/8/21 9:35:00 [只看该作者]

好办法,顶啊,保存一万多条数据瞬间完成。

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


加好友 发短信
等级:幼狐 帖子:83 积分:1381 威望:0 精华:0 注册:2013/11/28 19:45:00
  发帖心情 Post By:2019/1/2 8:39:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:错误提示.png
图片点击可在新窗口打开查看

Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("Provider=SQLOLEDB.1;Password=cwsa;Persist Security Info=True;User ID=sa;Initial Catalog=K3cx2016;Data Source=cwserver2017") '改为自己数据库的连接字符串
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("序号", "订单编号","件号","业务件号","数量","已领数量","不含税价","税率","已领金额","应发金额","供料属性","特别单价","计划下达时间","总成批次")  '改为自己的列名,有多少列就增加多少个
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("序号", "订单编号","件号","业务件号","数量","已领数量","不含税价","税率","已领金额","应发金额","供料属性","特别单价","计划下达时间","总成批次")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.Destinati '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("PEBS外购投料").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

参考并修改了代码,但提示这个错误,请问是我哪里还没有注意到?


 回到顶部
总数 14 1 2 下一页