2012-03-29 2 views
3

현재 작은 이미지 파일의 경로를 저장하는 varchar (255) 열이 있습니다. varbinary (max) 유형의 새 열에 파일을로드하려고하지만 저장 프로 시저를 작성하는 방법을 알지 못합니다. 같은varchar 열에 저장된 경로로 varbinary (max) 열을 업데이트하는 방법은 무엇입니까?

UPDATE MyTable 
SET image = "file located in field imagePath" 

내가 그 말도 안돼 알고 같은 뭔가 내가 어디 조항이 없기 때문에,하지만 나는이 장소에 넣어 것?

+0

그래서 당신은 하나 개의 테이블에 경로를 가지고와 귀하의 질문에 당신이 그 경로를 사용하려는이며, 파일을 가져 와서 다른 테이블에있는 열에 해당 파일을로드하십시오. 이해가 되니? – Teja

+0

어떤 버전의 SQL Server가 있습니까? –

+0

예 한 필드에 파일 경로가 있고 다른 필드에 파일을로드 한 다음 결국 첫 번째 필드를 삭제하려고합니다. 파일 시스템에 저장된 이미지를 varbinary (max) 필드에 저장하는 것으로 전환합니다. SQL Server 2008 R2 –

답변

1

SQL은 파일 시스템에 액세스하기에 적합하지 않지만 C#/VB.NET 프로그램에서는이 작업을 수행하기가 어렵지 않습니다.

EDIT : Tim Lehner의 OPENROWSET 솔루션은 SQL 2005 이상 버전에 이상적입니다.

+0

여기에 SQLCLR을 사용할 수 있습니다. 나는 그 모든 일을 스스로 찾아 볼 시간이 없다. –

+0

@Jeremy Pridemore, [여기] (http://www.mssqltips.com/sqlservertip/2349/read-and-write-binary-files-with-the-sql-server-clr/)를 볼 수 있습니다. –

+0

감사! 결국 데이터베이스에서 URL을 읽고 쿼리에 select를 수행하는 작은 C# 응용 프로그램을 작성했습니다. 100,000 개 이상의 업데이트와 10 만 개 이상의 삽입을 수행하는 방법이 다소 느려졌습니다. –

3

이렇게하려면 저장 프로 시저를 만들어야 할 수 있습니다.

Reading and Writing Files in SQL Server using T-SQL

내 목적은 텍스트 만 포함되어 있지만 바이너리는 언급 : 나는 좋은 효과를 여기에 설명 된 프록을 사용했습니다.

SQL 서버의 버전에 따라 openrowset을 시도하거나 @Jeremy Pridemore가 언급 할 때 use the CLR 수 있습니다.

UPDATE

위 SQL2005 또는 사용하는 경우이 코드가 도움이 될 수

:

declare @MyFile varbinary(max) 
select @MyFile = bulkcolumn 
from openrowset (bulk 'C:\SomeFolder\SomeImage.jpg', single_blob) myfile 
select @MyFile 
관련 문제