· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [推荐] 江民安全专家永久免费 立即下载  RSA 2010
· [专题] 谷歌遭黑客攻击事件 2010网页挂马爆发之年
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 《拆弹部队》藏木马 看Xbox360与PS3背后秘密
· [热点] 报告:PDF漏洞远超微软 十款免费电子邮件程序

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

发布时间:2008.07.10 04:40     来源:赛迪网    作者:Dempsey

【赛迪网-IT技术报道】这篇论坛文章(赛迪网技术社区)详细讲解了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表中。

(责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 讲解Microsoft SQL Server的行式触发器 (07-09) · Microsoft SQL Server本机Web服务使用方案 (07-08)
· SQL Server平台上数据仓库管理员的关键任务 (06-25) · SQL Server平台上数据仓库管理员的关键任务 (06-25)
· 个人经验总结:SQL Server数据库的锁类型 (06-24) · SQL Server数据库动态交叉表的参考示例 (06-24)
· SQL Server性能的改进得益于逻辑数据库设计 (06-23) · SQL Server性能的改进得益于逻辑数据库设计 (06-23)
· 经验总结:SQL Server与Oracle的数据同步 (06-11) · 利用SQL Server复制技术实现数据同步更新 (06-10)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:政策力挺 新能源汽车及电池将“井喷”
·3.15赛迪网特别策划:消..
·专题:惠普栽在3.15前..
·深度观察:中国新能源汽..
专题:三网融合 看起来很美!
·专题:动力100——助企..
·专题:三大运营商"扎堆"..
·专题:谷歌推智能手机Ne..
专题:回顾2009 原装耗材与兼容耗材发展
·专题:HP Photosmart Pl..
·专题:超薄超强 戴尔推..
·2009赛迪网年终评选 惠..
专题:RSA 2010信息安全大会
·专题:谷歌遭黑客攻击事..
·无处不挂马 2010年网页..
·龙存科技:由BizSpark成..