您所在的位置: 首页 > 读书频道 > 数据库 > SQL Server >

12.5 大对象数据的处理

http://book.51cto.com  2008-04-08 15:07  周 涛 吕伟臣 夏永和 编著  清华大学出版社  我要评论(0)
  • 摘要:《SQL Server 2005数据库基础应用》本书以实例为中心,设计了许多企业日常应用中遇到的数据库问题。第12章继续深入地介绍查询的一些高级应用。本文说的是大对象数据的处理。
  • 标签:SQL  Server  SQL Server 2005数据库基础应用

12.5  大对象数据的处理

在第7章介绍表的结构时,曾提到过大对象,大对象(Large Object,LOB)就是指那些包含任何数字化信息的数据字段,数字化信息可以是音频、视频、图像以及文档等。这类数据多以大容量文件的形式出现,如音频文件或图像文件等。

SQL Server 2005为VARCHAR、NVARCHAR和varbinary数据类型带来了新的变化,引入了max说明符,即varbinary(max)、VARCHAR(max)和NVARCHAR(max),替换未来版本中即将删除的IMAGE、TEXT和NTEXT类型,用来储存大容量数据文件。

大多数LOB类型的数据会占用很大的存储空间。因此,SQL Server数据库没有将LOB对象数据直接保存到指定的字段中,而是为它们单独开辟新的存储空间,在字段中保存一个16位长,指向该存储空间的指针。

为了向数据库中导入大对象数据,可以使用OPENROWSET函数,该函数通过内置的BULK访问接口支持大容量操作,提供导入大型对象的功能。对大型对象数据,OPENROWSET BULK子句支持三个选项,允许用户以单行或单列行集导入数据文件的内容。用户可以通过指定相应的选项来导入大型对象数据,而不使用格式化文件。

大对象选项包括:

SINGLE_BLOB。以单行读取数据文件的内容,以varbinary(max)类型的单列行集返回内容。

SINGLE_CLOB。以字符读取指定数据文件的内容,以VARCHAR(max)类型的单行、单列行集返回内容,使用的是当前数据库的排序规则,例如文本或 Microsoft Word文档。

SINGLE_NCLOB。以 Unicode 读取指定数据文件的内容,以 NVARCHAR(max)类型的单行、单列行集返回内容,并使用当前数据库的排序规则。

下面用一个简单的例子介绍怎样来创建包含大对象数据类型的表,以及如何导入大对象数据。

【示例35】在MyCompany数据库中,创建LOBTable表,并为Contents字段和Picture字段导入适当的数据。

完整的设计步骤如下。

(1) 在查询编辑器中输入以下代码:

USE MyCompany
GO
CREATE TABLE LOBTable
(Name NVARCHAR(60) NULL,
Numb INT NOT NULL,
Class NVARCHAR NULL,
Contents VARBINARY(max) NULL,
Picture VARBINARY(max) NULL)
GO

(2) 在上面的语句中,创建了一个LOBTable表,注意,其中Contents和Picture字段使用了varbinary(max)类型来存储数据。然后插入第一条记录:

INSERT INTO LOBTable
(Name,Numb,Class,Contents,Picture)
SELECT 'Peter' AS Name,
'21001' AS Numb,
'72301' AS Class,
* FROM OPENROWSET(BULK 'C:\Peter.txt', SINGLE_BLOB) AS Contents,
OPENROWSET(BULK 'C:\Peter.JPG', SINGLE_BLOB) AS Picture
GO

(3) 执行该语句,结果如图12.47所示。

图12.47 大对象INSERT INTO语句的执行结果

(4) 可以继续执行如下语句:

SELECT *
FROM LOBTable

(5) 查询结果如图12.48所示。

图12.48 大对象的查询

在上面的语句中,使用了OPENOWSET 函数将文字文件(.txt)和图像文件(.JPG)的内容直接存入LOBTABLE表Contents字段和Picture字段中。这里假设Peter.txt、Peter.JPG、William.txt和William.JPG都已经放在C盘根目录下。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
深入SQL Server 2008
如何有效防御SQL注入攻击
Sun以10亿美元并购开源数据库厂商MySQL
Windows Home Server 家用服务器专题
Windows Server 2008专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Linux C编程实战

  • 作者:童永清
  • 本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linu..
Copyright©2005-2008 51CTO.COM 版权所有