有个项目需要在sqlserver抓取oracle数据,采用了sqlserver中的链接服务器技术访问oracle,有5张表,总数据量大概有5万行左右,使用如下方式访问、遍历数据:
...
DECLARE @tableTemp AS TABLE
(
ID NVARCHAR(36),
NAME NVARCHAR(50)
)
SET @sql = 'SELECT * FROM OPENQUERY(TEST, ''SELECT ID,NAME FROM TEST_TABLE WHERE ID ='''''+@id+''''''')';
INSERT INTO @tableTemp EXEC(@sql);
DECLARE recTask CURSOR LOCAL FOR
SELECT ID,OBJNO FROM @tableTemp ;
OPEN recTask;
FETCH NEXT FROM recTask
INTO @Id,@name
WHILE(@@FETCH_STATUS=0)
BEGIN
--不存在插入,存在更新
...INSERT....
...UPDATE...
FETCH NEXT FROM recTask INTO @Id,@name
END
...
5张表5个这样的语句,全部执行完花费了十几分钟
请问有没有什么办法缩短执行时间?
回答
不如写一个小程序,分别连接oracle和SqlServer,一般读也编写,看看速度。或者读取后批量导入SqlServer
本文探讨了一种在SQL Server中通过链接服务器技术访问Oracle数据库的方法,针对5张总计5万行数据的表,执行效率低的问题。作者寻求缩短执行时间的策略,可能涉及批量导入、优化查询或并发处理。建议尝试编写并比较本地连接和远程访问的性能,或采用批处理操作来提高数据处理速度。
1857

被折叠的 条评论
为什么被折叠?



