读书人

从 Excel 导入到 SQL 的大数据效率有关

发布时间: 2013-01-25 15:55:29 作者: rapoo

从 Excel 导入到 SQL 的大数据效率问题
导入数据量:10W。
环境:Sql server 2008 R2
导入用时 29分钟。
每条执行语句:

那可以先插入到一个临时表(可以是实体临时表),然后再做sql层面的匹配吗?
[解决办法]
USE test
GO


-->生成表tb

if object_id('tb') is not null
drop table tb
Go
Create table tb([Type] nvarchar(1))
Insert into tb
Select N'A'
Union all Select N'B'


INSERT INTO TB
SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','EXCEL 12.0;HDR=YES;IMEX=2;DATABASE=H:\test.xls',[Sheet1$]) AS t
WHERE NOT EXISTS(SELECT 1 FROM tb AS x
WHERE x.Type=t.TYPE
)

/*
(4 料列受到影)
*/

SELECT * FROM tb
/*
Type
----
A
B
C
D
E
F

*/

[解决办法]
不要一条条搞,1000-10000条先取出ID集中delete,然后用bulkcopy插入,如果用.net,sql2008支持datatable传入表变量,可以通过exists来删除一批数据。



io无压力的话,预计每10000数据插入需1s,删除看目标表数据量,但也就几秒能够搞定。1分钟处理几十万元没问题

读书人网 >SQL Server

热点推荐