以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  向SQL数据库追加数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57803)

--  作者:pyh6918
--  发布时间:2014/10/4 11:33:00
--  向SQL数据库追加数据

向SQL数据库追加一批数据,我的做法是用Merger方法将EXCEL类型数据合并到数据表中,再执行保存命令,

由于数据量较大(80列,2000行),保存比较耗时(可能是我的方法有问题)做了一个进度条,代码如下:

 

Dim s As Integer
Dim jd As WinForm.ProgressBar = e.Form.Controls("ProgressBar1")
jd.Minimum=0
jd.Maximum=Tables("测试").Rows.Count
e.Form.Controls("ProgressBar1").Visible=True
For s = 0 To Tables("测试").Rows.Count-1
    Tables("测试").Rows(s).Save()
    If s Mod 20 = 0 Then
        jd.Value=s
        Application.DoEvents()
    End If
Next
MessageBox.Show("导入完成!","提示")

 

现在主要想解决保存的速度问题,搜了一下论坛贴子,说是用事务,但这句不知道怎么弄

cmd.CommandText = "save From {测试}"

或者各位老大有什么好办法,请赐教!


--  作者:有点甜
--  发布时间:2014/10/4 11:38:00
--  

 1、你尝试直接保存 Datatables("测试").Save 看保存速度;

 

 2、如果1的方法保存依旧很慢,就需要用sql语句去实现 http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&replyID=&skin=1

 


--  作者:pyh6918
--  发布时间:2014/10/4 11:46:00
--  

Datatables("测试").Save 这个速度和

 

For s = 0 To Tables("测试").Rows.Count-1
    Tables("测试").Rows(s).Save()
    If s Mod 20 = 0 Then
        jd.Value=s
        Application.DoEvents()
    End If
Next

是一样的,早已测试过了

 

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&replyID=&skin=1 这个贴子也看过了,是从一个表向另一个表保存数据,如果我用这个方法,是不是得增加一个过渡表?

 

[此贴子已经被作者于2014-10-4 11:46:42编辑过]

--  作者:有点甜
--  发布时间:2014/10/4 11:49:00
--  
 回复3楼,人家只是模仿,你关键是看sql语句怎么生成。
--  作者:pyh6918
--  发布时间:2014/10/4 11:49:00
--  
我备份数据采用的就是这个方法http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&replyID=&skin=1 
[此贴子已经被作者于2014-10-4 11:49:07编辑过]

--  作者:有点甜
--  发布时间:2014/10/4 11:54:00
--  

 关键是看最后的SQL语句是什么,怎么生成,保存数据实际上就是执行一段sql语句即可。


--  作者:pyh6918
--  发布时间:2014/10/4 12:06:00
--  
谢谢,我学习一下!