网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.有助于数据创建安全环境的重要功.
.SQL Server日志文件总结及日志满.
.教你快速掌握"patindex"函数的使.
.SQL Server的链接服务器技术小结.
.不能安装SQL Server 2005的问题及.
.金额阿拉伯数字转换为中文的存储.
.解决问题: sql server 2000 企业.
.轻松接触 SQL Server的“数据同步.
.带你深入了解数据仓库优化中的星.
.用SQL 2005的ROW_NUMBER() 实现分.
.查询数据库表和字段sql语句.
.问题“未于信任SQL Server连接相.
.用一个示例讲解自治事务和非自治.
.用Caché的Speedminer构建和部署.
.sql server 2005中的表分区.
.小记存储过程中经常用到的本周,.
.TOP N 和SET ROWCOUNT N 哪个更快.
.Replace INTO与INSERT INTO的不同.
.小议主子表INT自增主键插入记录的.
.MSSQLServer2000的排序功能原来这.

SQL Server 2005 - 善用 OPENROWSET 函数来存取大型对象(LOB)

发表日期:2006-10-19


我们在「Visual Basic 2005 档案 IO 与资料存取秘诀」一书的第七章,详细探讨了如何于前端程序处理大型对象(LOB)。有读者询问,SQL Server 2005 本身是否提供任何的 Transact-SQL 陈述式来处理 LOB 呢?答案当然是肯定的,而且具备相关处理能力的 Transact-SQL 陈述式还不只一个。不过在本文中,我们将把焦点摆在 OPENROWSET 函数。

 

SQL Server 2005 的 OPENROWSET 函数能够一次就完成远程数据的连结与存取作业。OPENROWSET 函数在使用的形式上就好比是一个资料表,比方说,您可以在 SELECT 陈述式的 FROM 子句中参考 OPENROWSET 函数,此外,视 OLE DB 提供者的能力而定,您也可以在 INSERT、UPDATE 或 DELETE 陈述式中把 OPENROWSET 函数当成目标数据表来使用。

 

特别值得一提的是,SQL Server 2005 替 OPENROWSET 函数加入了 BULK 数据列集提供者,使得您可以直接从文字文件、XML 文件、以及图档…等档案中读取数据。此意味着,从现在开始,您可以在一道非常简单的 INSERT INTO…SELECT 陈述式中使用 OPENROWSET 函数来将内含大量数据的档案内容存入数据表的字段中。

 

OPENROWSET BULK 选项自变量可以精确控制数据读取的开始与结束位置、如何处理错误、以及资料要如何被解译。比方说,您可以要求将数据文件读取成 varbinary、varchar 或 nvarchar 型别的单一数据列与单一字段的数据列集。

 

我想光说不练是没有用的在,以下的程序代码中,我们会先建立一个数据表,然后使用 INSERT INTO…SELECT 陈述式来新数据记录。请特别注意我们如何使用 OPENROWSET 函数将文字文件(.txt)与图档(.jpg)的内容直接存入数据表的「自传」与「玉照」字段中:

USE 北风贸易;
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id =
           OBJECT_ID(N'dbo.练习资料表') AND type in (N'U'))
DROP TABLE dbo.练习资料表
GO

--建立数据表
CREATE TABLE dbo.练习资料表(
 编号 int IDENTITY(1,1) NOT NULL,
 姓名 nvarchar(10) NULL,
 性别 nvarchar(2) NULL,
 自传 nvarchar(max) NULL,
 玉照 varbinary(max) NULL,
 );
GO

--新增第一笔数据(包括 NCLOB 与 BLOB 在内)
INSERT INTO dbo.练习资料表
(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
 * FROM
 OPENROWSET
    (BULK 'C:\Temp\Employee-A156401174.txt', SINGLE_NCLOB) AS 自传,
 OPENROWSET
    (BULK 'C:\Temp\Employee-A156401174.jpg', SINGLE_BLOB) AS 玉照;
GO

--新增第二笔数据(包括 NCLOB 与 BLOB 在内)
INSERT INTO dbo.练习资料表
(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
 * FROM
 OPENROWSET
    (BULK 'C:\Temp\Employee-A156401174.txt', SINGLE_NCLOB) AS 自传,
 OPENROWSET
    (BULK 'C:\Temp\Employee-A156404535.jpg', SINGLE_BLOB) AS 玉照;
GO

 

章立民研究室敬上

http://www.cnblogs.com/liminzhang/archive/2006/10/18/532140.html

上一篇:SQL Server 2000 在 win2003上安装不上,我的解决办法 人气:7012
下一篇:生成50万条记录的大数据表的TSQL语句 人气:5181
浏览全部SQL Server 2005的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐