如何提高对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 ] ]
)
]
参数
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>