[SQL] SQL 서버 관리 스튜디오를 사용하여 데이터베이스로 BLOB를 삽입하는 방법
SQLSQL 서버 관리 스튜디오를 사용하여 데이터베이스로 BLOB를 삽입하는 방법
어떻게 쉽게 VARBINARY (MAX) 필드에 BLOB를 삽입 할 수 있습니다?
예로서:
내가 삽입 할 것입니다 : C : \ picture.png 테이블이 MYTABLE입니다 열은이다 mypictureblob 장소 recid = 1 인
해결법
-
==============================
1.당신은 SQL Server Management Studio를 내부와 OPENROWSET의 Section 명령을 사용하여 특히 T-SQL을 사용하여 VARBINARY (최대) 필드에 삽입 할 수 있습니다.
당신은 SQL Server Management Studio를 내부와 OPENROWSET의 Section 명령을 사용하여 특히 T-SQL을 사용하여 VARBINARY (최대) 필드에 삽입 할 수 있습니다.
예를 들면 :
INSERT Production.ProductPhoto ( ThumbnailPhoto, ThumbnailPhotoFilePath, LargePhoto, LargePhotoFilePath ) SELECT ThumbnailPhoto.*, null, null, N'tricycle_pink.gif' FROM OPENROWSET (BULK 'c:\images\tricycle.jpg', SINGLE_BLOB) ThumbnailPhoto
좋은 예 / 연습을 위해 다음과 같은 설명서를 살펴 보자
큰 값 유형 작업
이 경우 파일 경로를 표적으로 SQL 서버와 클라이언트가이 명령을 실행하지를 기준으로합니다.
-
==============================
2.MSDN은 큰 값 유형 작업 기사가 있습니다 이는 수입 부품이 작동하는 방법을 설명하려고하지만 그것은 동시에 두 가지 일을하기 때문에 약간 혼란 얻을 수 있습니다.
MSDN은 큰 값 유형 작업 기사가 있습니다 이는 수입 부품이 작동하는 방법을 설명하려고하지만 그것은 동시에 두 가지 일을하기 때문에 약간 혼란 얻을 수 있습니다.
여기에 2 개 부분으로 나누어 단순화 된 버전을 제공하고 있습니다. 다음의 간단한 테이블을 가정합니다 :
CREATE TABLE [Thumbnail]( [Id] [int] IDENTITY(1,1) NOT NULL, [Data] [varbinary](max) NULL CONSTRAINT [PK_Thumbnail] PRIMARY KEY CLUSTERED ( [Id] ASC ) ) ON [PRIMARY]
당신은 (SSMS에서) 실행하는 경우 :
SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB) AS X
그것은 하나 개의 컬럼이있는 테이블과 같은 결과 외모가 BulkColumn라는 것을 보여줍니다. 즉, 같은 INSERT에서 사용할 수있는 이유는 다음과 같습니다
INSERT [Thumbnail] ( Data ) SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB) AS X
나머지는 그냥 테이블 또는이있을 수도 있고 없을 수도 있습니다 더 열 삽입,로 피팅된다. 당신이 선택 FOO의 결과 이름을 경우에 당신은 SELECT Foo.BulkColumn를 사용하고 테이블의 다른 필드에 대한 그 상수 이후로 할 수 있습니다.
더 까다 얻을 수있는 부분은 여전히 괜찮다 확인 할 수 있도록 파일에 데이터를 다시 내보내는 방법입니다. 당신은 cmd를 라인에서 실행하는 경우 :
bcp "select Data from B2B.dbo.Thumbnail where Id=1" queryout D:\T\TestImage1_out2.dds -T -L 1
4 개의 추가 "PARAMS"에 대한 징징 시작하는 것 및 (변경된 파일이 발생합니다) 오해의 소지가 기본값을 제공 할 것입니다. 당신은 3, 4 assept 다음 0으로 2 위를 설정하고, 첫 번째를 받아 들일 수, 또는 명시 적으로 :
그런 다음 물을 것이다 :
당신이 다음 시간은 -f C를 추가 실행 : \ 테스트 \ bcp_2.fmt을하고 징징이 중지됩니다 :-) 시간과 슬픔을 많이 절약 할 수 있습니다.
-
==============================
3.TSQL와 BLOB를 선택하는 방법은 두 가지가 있습니다 :
TSQL와 BLOB를 선택하는 방법은 두 가지가 있습니다 :
SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
만큼 잘:
SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
필수 FROM 절 이후의 상관 관계 이름을합니다.
그런 다음이는 INSERT SELECT를 수행하여 삽입 할 수 있습니다.
또한 내가 TSQL을 사용하는 방법으로 업데이트하려면 BLOB에서 SQL 서버에 설명 된대로 업데이 트를 할 두 번째 버전을 사용할 수 있습니다.
-
==============================
4.그러나 당신은 단순히 SQL 서버 시스템의 디스크에서 파일을 읽을 수 있습니다 :
그러나 당신은 단순히 SQL 서버 시스템의 디스크에서 파일을 읽을 수 있습니다 :
select * from openrowset (bulk 'c:\path\filename.ext',single_blob) a
육각 형태 (관리 Studio)에서 관리 응용 프로그램에서 볼 수 있습니다.
그래서, 당신은, 예를 들어, 다음 (로컬 서버) 파일에 대한 백업 데이터베이스가 위의 문에서 다른 장소로 다운로드 할 수 있습니다.
-
==============================
5.당신은 MGMT 스튜디오에서 작업을 수행해야합니까? 여기에 우리가 cmd를 라인에서 그것을 할 방법은 다음과 같습니다
당신은 MGMT 스튜디오에서 작업을 수행해야합니까? 여기에 우리가 cmd를 라인에서 그것을 할 방법은 다음과 같습니다
"C : \ 프로그램 Files \ Microsoft SQL 서버 \ MSSQL \ BINN \ TEXTCOPY.exe"/ S <서버> / D <데이터베이스> / T MYTABLE / C의 mypictureblob / F "C : \ picture.png"W / "RecId = "/ I
-
==============================
6.좋아 ...이 너무 먼 길 걸렸다. 는 SQL 관리 스튜디오 도구는 그냥 이런 간단한 일까지이다 (I 쿼리에 대한 시간 제한을 설정하는 곳을 찾을 때 전에 나타났습니다, 그것은 4 개 개의 다른 장소에서 이루어졌다)
좋아 ...이 너무 먼 길 걸렸다. 는 SQL 관리 스튜디오 도구는 그냥 이런 간단한 일까지이다 (I 쿼리에 대한 시간 제한을 설정하는 곳을 찾을 때 전에 나타났습니다, 그것은 4 개 개의 다른 장소에서 이루어졌다)
나는 (SQL 거장 내 경우) 다른 SQL 에디터 패키지를 다운로드했습니다. 그리고 당신이 모양을보고,이 분야에 새로운 모양을로드 할 수있는 곳은 방울 편집기가 포함되어 보라.
입력 주셔서 감사합니다!
from https://stackoverflow.com/questions/1643627/how-to-insert-a-blob-into-a-database-using-sql-server-management-studio by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 또 다른 하나 개의 테이블 일치 조건에서 선택? (0) | 2020.04.29 |
---|---|
[SQL] 고유 식별자없이 중복 행을 삭제하는 방법 (0) | 2020.04.29 |
[SQL] SQL 서버의 모든 데이터베이스의 모든 테이블에 대한 열 이름을 찾는 방법 (0) | 2020.04.29 |
[SQL] PostgreSQL의에서 어떤 연산자 대 IN (0) | 2020.04.29 |
[SQL] 어떻게 기존 SQLite는 테이블에 외래 키를 추가하는 방법은 무엇입니까? (0) | 2020.04.29 |