当前位置:首页 > 数据库 > MS SQL Server > SQL Server海量数据导入最快方法的详解

sqlserver导入数据 SQL Server海量数据导入最快方法的详解

2017-01-07 | 来源:网络 | 关键字: sqlserver导入数据 sqlserver导入数据
建站学院文档 这篇论坛文章详细讲解了SQL Server海量数据导入的最快方法,更多内容请参考下文:最近做某项目的数据库分析,要实现对海量数据的导入问题,就是最多把200万条数据一次导入sqlserv

建站学院文档 这篇论坛文章详细讲解了SQL Server海量数据导入的最快方法,更多内容请参考下文:

最近做某项目的数据库分析,要实现对海量数据的导入问题,就是最多把200万条数据一次导入sqlserver中,如果使用普通的insert语句进行写出的话,恐怕没个把小时完不成任务,先是考虑使用bcp,但这是基于命令行的,对用户来说友好性太差,实际不大可能使用;最后决定使用BULK INSERT语句实现,BULK INSERT也可以实现大数据量的导入,而且可以通过编程实现,界面可以做的非常友好,它的速度也很高:导入100万条数据不到20秒中,在速度上恐怕无出其右者。

但是使用这种方式也有它的几个缺点:

1.需要独占接受数据的表

2.会产生大量的日志

3.从中取数据的文件有格式限制

但相对于它的速度来说,这些缺点都是可以克服的,而且你如果愿意牺牲一点速度的话,还可以做更精确的控制,甚至可以控制每一行的插入。

对与产生占用大量空间的日志的情况,我们可以采取在导入前动态更改数据库的日志方式为大容量日志记录恢复模式,这样就不会记录日志了,导入结束后再恢复原来的数据库日志记录方式。

具体的一个语句我们可以这样写:

以下为引用的内容:
alter database taxi
setwww.alonely.com.cn RECOVERY BULK_LOGGED
BULK INSERT taxi..detail FROM 'e:out.txt'
WITH (
?? DATAFILETYPE = 'char',
?? FIELDTERMINATOR = ',',
?? ROWTERMINATOR = '',
?TABLOCK
)
alter database taxi
set RECOVERY FULL

这个语句将从e:out.txt导出数据文件到数据库taxi的detail表中。

评论

评论数10

表情
发表评论
网友评论仅供其表达个人看法,并不表明网易立场。
《SQL Server海量数据导入最快方法的详解》更多评论

阅读下一篇

如何更好有效的调整和优化SQL语句

一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系 ... 查看全文

返回MS SQL Server 返回网站首页