把服务器上的一个数据库里的一个表下载到本地数据库对应表中.
我现在的写法是:
qyServer.active := false;
qyServer.sql.text := 'select XX,XX,xx from tbl_xxxx ';
qyServer.active := true;
while not qyServer.eof do
begin
qyLocal.sql.text := 'insert into tbl_xxx valuse('''+qyServer.fieldByName ('xxx').asString+''','''+...+'''...)';
qyLocal.ExecSQL;
qyServer.next;
end;
这样子做的话,资料量在1000条以下时候还可以接受的,但资料量一大就感觉很慢
问高手有没有办法解决这个问题,我相信一定有好的办法.
在线等.
我现在的写法是:
qyServer.active := false;
qyServer.sql.text := 'select XX,XX,xx from tbl_xxxx ';
qyServer.active := true;
while not qyServer.eof do
begin
qyLocal.sql.text := 'insert into tbl_xxx valuse('''+qyServer.fieldByName ('xxx').asString+''','''+...+'''...)';
qyLocal.ExecSQL;
qyServer.next;
end;
这样子做的话,资料量在1000条以下时候还可以接受的,但资料量一大就感觉很慢
问高手有没有办法解决这个问题,我相信一定有好的办法.
在线等.
把你要执行的sql写到存储过程然后执行就好了.
存储过程可以跨库访问.
select * into table_local from table_server
在delphi中用query调用
结束后用query.enablecontrol
,还有最好不要用Dbgrid这样的组件在那里刷新,刷新很占用资源
谢谢你先
就算用了disablecontrol也是这样。
谢谢你先
用sql的dts导入吧,Access也没有问题.
我觉得你可以使用
insert Tab1 select tab2
批插入,这样速度会很快的``
二个Query二个库怎么用 insert table1 select table2 呀!
procedure TForm1.suiButton1Click(Sender: TObject);//调用程序
var
tempvar:string;
begin
tempvar:='aaaaaaaa';
sqlexec('insert into tbl_xxx valuse('''+qyServer.fieldByName ('xxx').asString+''','''+...+'''...)');
end;//sqlexec的函数
procedure sqlexec(sqlcommstring:string); //插入、更新、删除等SQL操作
begin
with dataSetAll do
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
adoconn.Close;
adoconn.Open;
adoconn.BeginTrans; //开始事务处理
try
ADOQuery1.SQL.Add(sqlcommstring);
ADOQuery1.ExecSQL;
adoconn.CommitTrans;//提交事务处理
except
adoconn.RollBackTrans;//回滚事务处理
end;
end;
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
--本机的Access文件
insert into
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'd:\mzzd.mdb';'admin';'', mzsf_hslb)
(cwlb, cwlm, hslb, hslm)
--服务器Myserver中的XSDATA数据库
SELECT a.cwlb, a.cwlm, a.hslb, a.hslm
FROM OPENROWSET('SQLOLEDB','Myserver';'sa';'mypass',
'SELECT * FROM XSDATA.dbo.Table1 ') AS a上面的脚本 本人已测试通过!
如果只能在前台操作,那肯定是慢的,你就不要想怎么优化了,
如果用SQL SERVER,则很灵活,全部在后台完成,时间用的也很少
[email protected]
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966