17xie > SQL Server 2005高级程序设计 > 5.4 OPENROWSET (BULK)
背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-105559.html    注册17xie 一起来写书 实现您的出书梦想!

5.4  OPENROWSET (BULK)

还有另外一个类似BCP的大容量操作,不过,这种操作与BCP关系较远。可以把这种操作想成是来自于家族中拥有大部分金钱和权势的一方(为免得你不知道,我得说,我喜欢这种操作)。OPENROWSET (BULK)将大容量行集提供程序与OPENROWSET的能力结合在一起,当在查询中使用时能快速并且相对灵活地访问外部文件,而不必把它们载入到中间表中。

BCP更常见的用途之一是,由周期性的进程使用,以载入外部数据文件。例如,你可能接收到这样的文件,文件中包含信用报告、厂商目录以及其他由商家以一般格式表示的数据。这些数据对于你是很重要的信息,但是,比起真正导入这些数据来说,你更感兴趣的可能是与这些数据的一次性的交互。OPENROWSET (BULK)允许把那样的文件(或仅仅是文件的一部分)当作一个表来处理。另外,比起简单的链接表所能提供的转换来说,它能够利用格式化文件,为文件格式提供更好的转换。其语法如下所示:

OPENROWSET

( BULK '<数据文件>' ,

{ [ FORMATFILE = '<格式化文件>' ] [

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

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

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

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

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

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

]

| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }

} )

要记住,OPENROWSET不仅是一种插入方法,更是一种大容量访问的方法。毋庸置疑,当数据源是OPENROWSET时,肯定能够进行INSERT INTO操作(实际上,常常就是这样使用它的),但是,OPENROWSET可以更灵活。那么,在了解了这些后,接着讨论涉及OPENROWSET的两个重要的大容量选项方面的问题。

5.4.1  ROWS_PER_BATCH

该选项容易让人误解。关于该选项,要记住的最重要的事情是,如果使用它,那么,实际上是在为查询优化器提供一个提示。SQL Server始终将处理整个文件,但是,如果为该选项指定了值,则该值将成为提供给优化器的提示,说明文件中有多少行——尽量让值准确,或者忽略该值。

5.4.2  SINGLE_BLOB,SINGLE_CLOB,SINGLE_NCLOB

这些选项说明,要把整个文件当作一个事物来处理——只有一个列的单个行。以varbinary(max)为类型传出。如果使用SINGLE_BLOB,则将应用Windows编码约定。SINGLE_CLOB将假定数据是ASCII数据,而SINGLE_NCLOB将假定数据是Unicode数据。


字数:1310    最后更新:7个月以前 [04-23 16:05]happyskynet 修改
本页编辑者:happyskynet  
[前一页]:5.3 BULK INSERT  [后一页]:5.5 小结
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号