SQL Server 2005 - 善用 OPENROWSET 函数来存取大型对象(LOB)
2007-03-21 15:38
501 查看
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 在内)
[b]INSERT INTO dbo.[/b]练习资料表(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
* FROM
[b] OPENROWSET
(BULK 'C:/Temp/Employee-A156401174.txt', SINGLE_NCLOB) AS [/b]自传,
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156401174.jpg', SINGLE_BLOB) AS [/b]玉照;
GO
--新增第二笔数据(包括 NCLOB 与 BLOB 在内)
[b]INSERT INTO dbo.[/b]练习资料表(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
* FROM
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156401174.txt', SINGLE_NCLOB) AS [/b]自传,
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156404535.jpg', SINGLE_BLOB) AS [/b]玉照;
GO
特别值得一提的是,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 在内)
[b]INSERT INTO dbo.[/b]练习资料表(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
* FROM
[b] OPENROWSET
(BULK 'C:/Temp/Employee-A156401174.txt', SINGLE_NCLOB) AS [/b]自传,
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156401174.jpg', SINGLE_BLOB) AS [/b]玉照;
GO
--新增第二笔数据(包括 NCLOB 与 BLOB 在内)
[b]INSERT INTO dbo.[/b]练习资料表(
姓名,
性别,
自传,
玉照
)
SELECT '章立民' AS 姓名, '男' AS 性别,
* FROM
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156401174.txt', SINGLE_NCLOB) AS [/b]自传,
OPENROWSET
[b] (BULK 'C:/Temp/Employee-A156404535.jpg', SINGLE_BLOB) AS [/b]玉照;
GO
相关文章推荐
- SQL Server 2005 - 善用 OPENROWSET 函数来存取大型对象(LOB)
- SQL Server 2005 - 善用 OPENROWSET 函数来存取大型对象(LOB)
- SQLServer2005-善用OPENROWSET函数来存取大型对象(LOB)
- 老南瓜:C#通过AMO对象模型浏览SQL SERVER 2005 SSAS角色一例
- SQL Server 2005 日期相关函数
- SQL Server 2005中开发通用的自定义函数,实现类似Min或MAX函数功能(附源码)
- sql server 2005 金额函数
- sql server 2005 replace 函数用法
- SQL Server 2005 中 ROW_NUMBER() 函数的简单用法
- SQL Server 2005不能导入数据(无法创建SSIS 运行时对象)
- SQL Server 2005 中的Row_Number()函数
- 【转】ASP.NET 数据分页第一篇 - 探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数
- SQL Server 2005系列教学(10) 函数
- SQL Server 2005------分区表和分区函数
- Sql Server 2005 ROW_NUMBER 函数实现分页
- FIX: 错误消息当您使用服务器端游标来运行 SQL Server 2005 中大型复杂查询: " " 错误 8623, 严重性 16, 状态 1: 查询处理器用尽了超出内部资源:::
- SQL Server 2005,2008 正则表达式 替换函数应用详解
- sql server 2005 中的分区函数用法(partition by 字段)
- sql server 2005 中的dense_rank()函数的应用
- SQL server 2005 无法安装数据库关系图支持对象