복붙노트

[SQL] SQL 서버 관리 스튜디오를 사용하여 데이터베이스로 BLOB를 삽입하는 방법

SQL

SQL 서버 관리 스튜디오를 사용하여 데이터베이스로 BLOB를 삽입하는 방법

어떻게 쉽게 VARBINARY (MAX) 필드에 BLOB를 삽입 할 수 있습니다?

예로서:

내가 삽입 할 것입니다 : C : \ picture.png 테이블이 MYTABLE입니다 열은이다 mypictureblob 장소 recid = 1 인

해결법

  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. ==============================

    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. ==============================

    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. ==============================

    4.그러나 당신은 단순히 SQL 서버 시스템의 디스크에서 파일을 읽을 수 있습니다 :

    그러나 당신은 단순히 SQL 서버 시스템의 디스크에서 파일을 읽을 수 있습니다 :

    select * from openrowset (bulk 'c:\path\filename.ext',single_blob) a
    

    육각 형태 (관리 Studio)에서 관리 응용 프로그램에서 볼 수 있습니다.

    그래서, 당신은, 예를 들어, 다음 (로컬 서버) 파일에 대한 백업 데이터베이스가 위의 문에서 다른 장소로 다운로드 할 수 있습니다.

  5. ==============================

    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. ==============================

    6.좋아 ...이 너무 먼 길 걸렸다. 는 SQL 관리 스튜디오 도구는 그냥 이런 간단한 일까지이다 ​​(I 쿼리에 대한 시간 제한을 설정하는 곳을 찾을 때 전에 나타났습니다, 그것은 4 개 개의 다른 장소에서 이루어졌다)

    좋아 ...이 너무 먼 길 걸렸다. 는 SQL 관리 스튜디오 도구는 그냥 이런 간단한 일까지이다 ​​(I 쿼리에 대한 시간 제한을 설정하는 곳을 찾을 때 전에 나타났습니다, 그것은 4 개 개의 다른 장소에서 이루어졌다)

    나는 (SQL 거장 내 경우) 다른 SQL 에디터 패키지를 다운로드했습니다. 그리고 당신이 모양을보고,이 분야에 새로운 모양을로드 할 수있는 곳은 방울 편집기가 포함되어 보라.

    입력 주셔서 감사합니다!

  7. 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