SQL Server中如何使用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
【編輯推薦】