监控安装 ERP

系统集成论坛

 找回密码
 注册通行证

QQ登录

只需一步,快速开始

路由器交换机防火墙系统集成商城 优质产品采购平台
查看: 1993|回复: 1
打印 上一主题 下一主题

SQL Server海量数据导入方案

[复制链接]
跳转到指定楼层
1
发表于 2010-7-12 21:08:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
华为金牌代理
以下的文章主要向大家讲解的是SQL Server海量数据导入的最快最好用的实际操作方法,在实际操作中尼是否遇到过SQL Server海量数据导入这一要求,以下的文章主要向大家讲述的是实现其实际操作的具体方案。

这篇论坛文章(赛迪网技术社区)详细讲解了SQL Server海量数据导入的最快方法,更多内容请参考下文:

最近做某项目的数据库分析,要实现对海量数据的导入问题,就是最多把200万条数据一次导入sqlserver中,如果使用普通的insert语句进行写出的话,恐怕没个把小时完不成任务,先是考虑使用bcp,但这是基于命令行的,对用户来说友好性太差,实际不大可能使用;最后决定使用BULK INSERT语句实现。

BULK INSERT也可以实现大数据量的导入,而且可以通过编程实现,界面可以做的非常友好,它的速度也很高:导入100万条数据不到20秒中,在速度上恐怕无出其右者。

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

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

2.会产生大量的日志

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

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

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

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


alter database taxi  
set RECOVERY BULK_LOGGED
BULK INSERT taxi..detail FROM 'e:\out.txt'  
WITH (  
?? DATAFILETYPE = 'char',  
?? FIELDTERMINATOR = ',',  
?? ROWTERMINATOR = '\n',  
?TABLOCK  )  
alter database taxi  
set RECOVERY FULL  

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


以上的相关内容就是对讲解SQL Server海量数据导入的最快方法的介绍,望你能有所收获。
我分享,我成长!系统集成 XTJC.COM

8

主题

272

帖子

324

积分

正式员工

2
发表于 2010-7-15 11:15:46 | 只看该作者
华为金牌代理
学习一下
您需要登录后才可以回帖 登录 | 注册通行证

本版积分规则

联系我们| 手机版|系统集成论坛 ( 京ICP备11008917号 )

GMT+8, 2024-11-28 05:42 , Processed in 0.100362 second(s), 28 queries .

系统集成论坛

BBS.XTJC.COM

快速回复 返回顶部 返回列表