繁体   English   中英

批量插入SQL Server 2005

[英]Bulk insert into SQL Server 2005

将3个文本文件批量插入到test1表中,每个文本文件包含1个lac记录。

3个文件中的每个文件都有公司代码和作品集。 如果test1表中已经存在compcode和folio,则必须使用文本文件中的特定记录更新表,否则将其插入。

但是我的查询要花很多时间。 test1表具有70列

Mmy逻辑:

  1. 在虚拟表中导入数据
  2. 将虚拟行的每一行与test1表进行比较
  3.  if exists ( select * from #dummy , test1 where condition ) begin update test1 set col = (#dummy.col).. inner join #dummy on (condition) end 
  4.   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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM