SQL Server Management Studio를 사용하여 BLOB를 데이터베이스에 삽입하는 방법
어떻게 하면 쉽게 블럽을 삽입할 수 있습니까?varbinary(MAX)
필드?
예를 들어,
제가 삽입하고 싶은 것은: c:\picture.png입니다.
그 테이블은 나의 테이블입니다.
그 칼럼은 나의 그림 블로그입니다.
장소는 recid=1입니다.
SQL Server Management Studio 내에서 T-SQL을 사용하고 특히 OPENROWSET 명령을 사용하여 varbinary(max) 필드에 삽입할 수 있습니다.
예:
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 서버에 상대적입니다.
MSDN에는 "큰 값 유형 작업"이라는 기사가 있는데, 이 기사는 수입 부품이 어떻게 작동하는지 설명하려고 하지만, 두 가지 작업을 동시에 수행하기 때문에 약간 혼란스러울 수 있습니다.
여기서 저는 두 부분으로 나뉘어진 단순화된 버전을 제공합니다.다음과 같은 간단한 표를 가정합니다.
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
나머지는 테이블에 있을 수도 있고 없을 수도 있는 더 많은 열이 있는 삽입물에 끼워 맞추는 것입니다.만약 당신이 그것의 결과를 말한다면.select FOO
그러면 사용할 수 있습니다.SELECT Foo.BulkColumn
그리고.as
테이블의 다른 필드에 대한 상수를 입력합니다.
더 까다로워질 수 있는 부분은 해당 데이터를 파일로 다시 내보내는 방법으로 문제가 없는지 확인할 수 있습니다.cmd 라인에서 실행하는 경우:
bcp "select Data from B2B.dbo.Thumbnail where Id=1"
queryout D:\T\TestImage1_out2.dds -T -L 1
4개의 추가 "파라미터"에 대해 징징대기 시작하고 잘못된 기본값을 제공합니다(파일이 변경됨).첫 번째를 수락하거나, 두 번째를 0으로 설정한 다음 세 번째와 네 번째로 설정하거나, 명시적으로 지정할 수 있습니다.
Data [varbinary(max))] 필드의 파일 저장소 유형을 입력합니다.
필드의 접두사 길이 입력 데이터 [8]: 0
필드 길이 입력 데이터 [0]:
필드 터미네이터 [없음] 입력:
그러면 다음과 같이 묻습니다.
이 형식 정보를 파일에 저장하시겠습니까?[Y/n] y
호스트 파일 이름 [bcp.fmt]:C:\테스트\bcp_2.fmt
다음 번에 실행해야 할 경우 추가-f C:\Test\bcp_2.fmt
그리고 징징거리는 것을 멈출 것입니다 :-) 많은 시간과 슬픔을 절약합니다.
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을 사용하여 SQL SERVER에서 BLOB를 업데이트하는 방법에 설명한 대로 두 번째 버전을 사용하여 업데이트를 수행할 수도 있습니다.
그러나 SQL 서버 시스템의 디스크에서 파일을 읽기만 하면 됩니다.
select * from openrowset (bulk 'c:\path\filename.ext',single_blob) a
관리 애플리케이션에서 16진수 형식(Management Studio)으로 확인할 수 있습니다.
예를 들어, 데이터베이스를 파일(로컬 서버)에 백업한 다음 위의 명령문을 사용하여 다른 위치에 다운로드할 수 있습니다.
관리 스튜디오에서 해야 하나요?cmd 라인에서 수행하는 방법은 다음과 같습니다.
"C:\Program Files\Microsoft SQL Server\"MSSQL\Binn\TEXCOPY.exe" /S < Server> /D < DataBase> /Timebable /Cmypictureblob /F "C:\picture.png" /W "whereRecId=" /I
좋아요... 너무 오래 걸렸어요sql-management studio 툴은 이와 같은 간단한 작업을 수행할 수 없습니다(이전에 쿼리 시간 제한을 설정할 위치를 찾을 때 확인한 바 있으며, 4개의 다른 위치에서 수행되었습니다).
다른 sql 편집기 패키지(내 경우 sql maestro)를 다운로드했습니다.여기에는 블롭을 볼 수 있는 블롭 편집기가 포함되어 있습니다. 그리고 이 필드에 새로운 블롭을 로드할 수 있습니다.
의견 감사합니다!
언급URL : https://stackoverflow.com/questions/1643627/how-to-insert-a-blob-into-a-database-using-sql-server-management-studio
'programing' 카테고리의 다른 글
Powershell에서 파일 이름을 소문자로 변경 (0) | 2023.08.20 |
---|---|
가져오기: 가져오기 응답을 사용하여 변수를 설정하고 함수에서 반환합니다. (0) | 2023.08.20 |
jooq jsonArrayAgg 쿼리 mariadb/mysql은 항상 "SQL 구문의 오류" 예외를 받습니다. (0) | 2023.08.20 |
에코에서 줄 바꿈 방지 (0) | 2023.08.20 |
jQuery를 사용하여 텍스트 영역 자동 확장 (0) | 2023.08.20 |