SQL Server中如何使用OPENROWSET函数

数据库 SQL Server
使用SQL Server数据库的时候,OPENROWSET 函数是经常会用到了,那么,如何合理使用SQL中的OPENROWSET 函数呢?本文将为您寻找答案。

使用SQL Server数据库的时候,OPENROWSET 函数是经常会用到了,那么,如何合理使用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
 

【编辑推荐】

SQL函数返回表的示例

SQL中遗留的"系统"函数

Sql Server数据类型转换函数

SQL汉字转换为拼音的函数

Sql语言中的日期格式化函数getDate()

责任编辑:段燃 来源: 互联网
相关推荐

2011-04-13 15:44:12

SQL Server数函数

2010-09-10 16:24:06

SQL函数

2009-02-23 13:41:42

XML操作函数SQL Server

2010-09-24 19:02:40

SQL中CONVERT

2010-09-08 13:40:15

SQL函数DateDiff

2010-09-06 16:40:52

SQL函数

2010-09-09 09:31:19

SQL函数left

2010-11-12 11:00:11

SQL SERVER内

2010-09-14 14:22:30

Sql Server日

2010-06-18 13:14:26

SQL Server

2010-10-21 16:59:37

SQL Server创

2010-10-21 16:59:37

SQL Server创

2010-07-07 10:25:00

SQL Server索

2011-08-22 13:04:47

SQL Server数函数

2011-08-22 11:39:53

SQL Server数PIVOT

2010-09-02 11:14:39

SQL删除日志

2010-06-24 09:47:47

SQL Server

2009-08-05 15:17:02

NTILE函数

2010-07-12 11:38:24

SQL Server函

2010-07-09 15:39:29

SQL server
点赞
收藏

51CTO技术栈公众号