如何将记录集的数据快速插入到表里。

liudonghan 2007-10-25 04:18:07
程序里是这么用的
Set oradynaset = objdatabase.DBCreateDynaset(SQL, 0)
然后一条一条的检索,做插入的SQL语句。
但是数据有好几十万条,这样做太慢了。

各位能人,有没有什么办法,将记录集里的数据快速插入到表里呢。

万分感谢!!!
...全文
170 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xghim 2007-10-26
  • 打赏
  • 举报
回复
如果不需要每一条数据都处理的话可以先存为一个xml文件,然后插入新数据
rs.save aaa.xml
然后用
INSERT INTO tableB ... SELECT ... FROM tableA 的方式

如果需要一条条的处理,那就用批处理的方式.
这至少又有两种方法,第一种是用
conn.BeginTrans
do while not rs.eof
strSql="insert into ........"
conn.Execute strSQL
rs.movenext
loop
conn.CommitTrans

另一种就是打开一个ADODB.Command.具体请参看帮助文件.大意也是差不多,就是最后执行插入动作时是一次性执行.
十几万条,想快也很难快起来

of123 2007-10-26
  • 打赏
  • 举报
回复
支持左手。用 SQL 命令,所有事情让数据库引擎去做。
Tiger_Zhao 2007-10-26
  • 打赏
  • 举报
回复
    Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prmID As ADODB.Parameter
Dim prmName As ADODB.Parameter
Dim i As Long
...
Set cmd = New ADODB.Command
cmd.CommandText = "INSERT INTO t1 (id,name) VALUES(?,?)"
Set cmd.ActiveConnection = cnn
cmd.Prepared = True '仅对 SQL 进行首次解析

Set prmID = cmd.CreateParameter("id", adInteger, adParamInput)
cmd.Parameters.Append prmID

Set prmName = cmd.CreateParameter("name", adVarChar, adParamInput, 10)
cmd.Parameters.Append prmName

For i = 1 To 10000
prmID.Value = i
prmName.Value = CStr(i)
cmd.Execute
Next
vansoft 2007-10-26
  • 打赏
  • 举报
回复
同意Tiger_Zhao 的意见。
liudonghan 2007-10-26
  • 打赏
  • 举报
回复
能不能给个例子,小弟是新手,感激不尽!!
Tiger_Zhao 2007-10-26
  • 打赏
  • 举报
回复
创建一个 INSERT 类型的 ADODB.Command,循环执行。
这样插入的 SQL 命令仅需要解析一次,而不是每个插入都要解析一次,数据量大时省下的时间还是可观的。
liudonghan 2007-10-26
  • 打赏
  • 举报
回复
因为这是个定期导入的功能,用户希望自己通过程序解决。
所以自带的数据库导入功能不可行。
现在的问题就是已有数据集,怎样将其中的内容插入到本地表。要快!!
Tiger_Zhao 2007-10-25
  • 打赏
  • 举报
回复
大批量尽量用数据库自带的导入功能。
tianhuo_soft 2007-10-25
  • 打赏
  • 举报
回复


if (你说的数据库=SQL Server) then
企业管理器;
找到你要复制的表
右键---所有任务----导出数据
按向导填就可以了 认真填噢
else
上面说的已经满足你了
end if

liudonghan 2007-10-25
  • 打赏
  • 举报
回复
没有源表,这个数据集是从ORACLE里用很复杂的SQL得来的,目的表是本地表。
饮水需思源 2007-10-25
  • 打赏
  • 举报
回复
'目的表已经存在
insert into 目的表(...) select ... from 源表
'目的表不存在
select ... into 目的表名 from 源表
Tiger_Zhao 2007-10-25
  • 打赏
  • 举报
回复
数据复制?
用 INSERT INTO tableB ... SELECT ... FROM tableA 的方式

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧