[英]Bulk insert into SQL Server 2005
将3个文本文件批量插入到test1
表中,每个文本文件包含1个lac记录。
3个文件中的每个文件都有公司代码和作品集。 如果test1
表中已经存在compcode和folio,则必须使用文本文件中的特定记录更新表,否则将其插入。
但是我的查询要花很多时间。 test1
表具有70列
Mmy逻辑:
if exists ( select * from #dummy , test1 where condition ) begin update test1 set col = (#dummy.col).. inner join #dummy on (condition) end
else insert
由于记录是在lacs中进行的,因此要花费30分钟以上的时间。.如何改进查询?
我假设您正在使用BULK INSERT将数据插入到临时表中,或者可以使用SQL Server中的导入向导将其导入。 之后,您可以使用以下查询。
即使您拥有if(exist)
它也只会更新两个表中都存在的行。 因此,删除if else并直接编写查询,如下所示:
update test1
set col = (#dummy.col)..
from test1
inner join #dummy on (test1.companycode =#dummy.companycode and test1.folio = #dummy.companycode)
要插入在test1中不退出的记录,可以使用左连接,如下所示:
Insert into test1
select column names
from
#dummy left join test1
on test1.companycode =#dummy.companycode and test1.folio = #dummy.companycode
where test1.companycode is null
and test1.folio is null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.