讲解SQLServer海量数据导入的最快方法
在做一个近期项目的数据库分析时,要实现海量数据的导入,就是一次最多导入200万条数据到sqlserver。如果用普通的insert语句来写,恐怕不用一个小时就能完成任务。第一,考虑使用bcp,但这是基于命令行的,对用户来说太友好,不太可能在实际中使用。最后决定用BULK INSERT语句来实现。BULK INSERT也可以实现大数据量的导入,可以通过编程实现。界面可以很友好,速度也很高:导入100万条数据不到20秒,速度恐怕无人能及。
但是使用这种方法也有几个缺点:
1.需要专门接受数据的表
2.将会生成大量日志。
3.从中提取数据的文件有格式限制。
但是和它的速度相比,这些缺点都是可以克服的,而且如果你愿意牺牲一点点速度,可以做更精准的控制,甚至可以控制每一行的插入。
对于空之间产生大量日志的情况,我们可以采用在导入前动态改变数据库日志的方法作为批量日志记录恢复模式,这样就不会记录任何日志,导入后恢复原来的数据库日志记录模式。
一个具体的陈述我们可以这样写:
改变数据库出租车
设置恢复BULK_LOGGED
散装插入出租车..“e:\out.txt”中的详细信息
与(
DATAFILETYPE = 'char ',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n ',
表锁
)
改变数据库出租车
设置恢复满
该语句将数据文件从e:\out.txt导出到数据库taxi的细节表中。
位律师回复
0条评论