반응형

SQL Server 2005에서는 대량 가져오기 및 내보내기 작업을 수행하는 방법에 한 가지가 새롭게 추가되었습니다.
  • bcp(대량 복사 프로그램) 명령
  • 두 가지 Transact-SQL 문
    • BULK INSERT
    • INSERT ... SELECT * FROM OPENROWSET(BULK...)
OPENROWSET (Transact-SQL)에 대해서는 이미 알고 계실 겁니다.
OPENROWSET은 OLE DB를 사용하여 원격 데이터에 연결하고 액세스하는 일회성의 임시 방법이며 연결된 서버에서 테이블을 액세스하는 방법의 대안입니다. OPENROWSET 함수는 쿼리의 FROM 절에서 테이블 이름인 것처럼 참조할 수 있습니다. 또한 OLE DB 공급자의 기능에 따라 INSERT, UPDATE 및 DELETE 문의 대상 테이블로도 OPENROWSET 함수를 참조할 수 있습니다.

SQL Server 2005에서는 OPENROWSET이 파일의 데이터를 읽어 행 집합으로 반환할 수 있는 기본 제공 BULK 공급자를 이용한 대량 작업도 지원합니다.

다음 예제 스크립트를 참조하세요. 


 

USE tempdb

GO

 

-- 1) varbinary(max) 컬럼을 가지는 테스트 테이블 생성하기

CREATE TABLE Logo (

 ID  int      NOT NULL,

 Gif  varbinary(max));

GO

 

-- 2) 이미지 파일을 테이블로 INSERT하기

INSERT Logo (ID, Gif)

SELECT 1, BulkColumn

FROM OPENROWSET (BULK N'C:\test\ADConsulting_logo.gif', SINGLE_BLOB) AS Pic

GO

SELECT Gif FROM Logo

GO

 

-- 3) 테이블의 컬럼에 저장되어 있는 gif UPDATE하기

UPDATE Logo

SET Gif = (

    SELECT BulkColumn

    FROM OPENROWSET (BULK N'C:\test\sqlservercentral_logo.gif', SINGLE_BLOB) AS Pic)

WHERE ID = 1

GO

SELECT Gif FROM Logo

GO

 



참고로 OPENROWSET ... BULK에는 3가지 옵션이 있습니다. 
 - SINGLE_BLOB
 - SINGLE_CLOB
 - SINGLE_NCLOB

자세한 내용은 SQL Server 온라인 설명서를 참조하기 바랍니다.

반응형

+ Recent posts