如何提高对SQLServer的插入速度

来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:45 点击:

向SQL Server中插入数据,常用的办法是由应用程序直接(或间接)使用Insert的SQL语句进行插入,但这种办法速度太慢,经测试其速度最快(当原始表为空表时)也仅仅是1000条左右。为了提高插入速度,想了许多其它办法(不包括提升计算机等硬件配置的方法),但效果都不太理想,与期望速度相差太多。
 
想到SQLServer的导入导出工具,发现使用这个工具导入数据的速度非常快,就想能不能了解一下这个工具的原理或者利用它类似的方法来导入数据呢?经查资料,发现SQL中也有类似的语句,那就是Bulk Insert。
 
Bulk Insert最主要的属性就是FIELDTERMINATOR和ROWTERMINATOR,这两个属性用于决定待导入文件中列的分隔符和行的分隔符。  www.2cto.com  
 
经测试,发现使用Bulk Insert的速度比使用Insert语句快多了,向表中插入60000条记录也就是一秒不到的时间。
 
在SQL Server的帮助中,对此命令的解释如下:
 
以用户指定的格式复制一个数据文件至数据库表或视图中。
 
语法
 
BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }
    [ WITH
        ( 
            [ BATCHSIZE [ = batch_size ] ]
            [ [ , ] CHECK_CONSTRAINTS ]
            [ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ]
            [ [ , ] DATAFILETYPE [ =
                { 'char' | 'native'| 'widechar' | 'widenative' } ] ]
            [ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ]
            [ [ , ] FIRSTROW [ = first_row ] ]
            [ [ , ] FIRE_TRIGGERS ]
            [ [ , ] FORMATFILE = 'format_file_path' ]
            [ [ , ] KEEPIDENTITY ]
            [ [ , ] KEEPNULLS ]
            [ [ , ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ]
            [ [ , ] LASTROW [ = last_row ] ]
            [ [ , ] MAXERRORS [ = max_errors ] ]
            [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
            [ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ]
            [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ]
            [ , [ TABLOCK ] ] 
        ) 
    ]
 
参数
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • SQL小技巧系列 --- 行转列合并
  • sql server 列转行
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1