首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

18.3  BULK INSERT

在本章开始处说过一个类似的大容量操作命令,这就是BULK INSERT命令。要使用该命令,必须是sysadmin的成员,或者是bulkadminserver角色的成员。

本质上,BULK INSERT操作类似于可以直接在T-SQL中使用的有限版本的BCP。其语法如下:

BULK INSERT [['<数据库名>'.]['<模式名>'].]'<表名>' FROM '<数据文件>'

  [WITH

  (

  [BATCHSIZE [ = <批处理行数>]]

  [, CHECK_CONSTRAINTS]

  [, CODEPAGE [={'ACP'|'OEM'|'RAW'|'<代码页>'}]]

  [, DATAFILETYPE [={'char'|'native'|'widechar'|'widenative'}]]

  [, FIELDTERMINATOR [= '<字段终止符>' ]]

  [, FIRSTROW [= <第一行行号>]]

  [, FIRE_TRIGGERS]

  [, FORMATFILE = '<格式化文件路径>' ]

  [, KEEPIDENTITY]

  [, KEEPNULLS]

  [, KILOBYTES_PER_BATCH [= <近似千字节数>]]

  [, LASTROW [ = <最后一行行号>]]

  [, MAXERRORS [ = <最多错误数>]]

  [, ORDER ({column [ASC|DESC]} [ ,...n ] )]

  [, ROWS_PER_BATCH [= <近似数据行数>]]

  [, ROWTERMINATOR [ = '<行终止符>']]

  [, TABLOCK]

  [, ERRORFILE = '<文件名>']

)

]

现在,如果你有一种似曾相识的感觉,那么你无疑是掌握了知识要点——几乎所有这些开关,都在本章开始处讲述的基本BCP导入语法中有类似的等价物。

BULK INSERT特殊的权限要求是有些麻烦(不是所有的人都属于sysadmin或bulkinsert),但是,BULK INSERT的确带来了几个显著的优点:

l    它能作为使用BEGIN TRAN和相关语句的用户定义事务的一部分执行;

l    对SQL Server来说,它运行在进程内,由于避免了编组,因而获得了一些性能上的提高;

l    与BCP使用的命令行语法相比,它没有那么费解(略少一些)。

关于BULK INSERT最大的问题是——它是大容量插入。BULK INSERT将不会帮助你创建格式化文件。它不会为你导出数据。它只是获得BCP功能的一种简单可行的方法,以便在SQL Server中把数据载入数据库。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论