Можно ли использовать SQL-запрос для переноса данных из столбца «Изображение» в столбец «FileStream»? - PullRequest
1 голос
/ 11 июня 2009

В моей базе данных SQL Express не хватает места, поэтому я перенесу тяжелые данные из старых столбцов больших двоичных объектов «image» в новые (varbinary) столбцы «файловых потоков» в SQL Server 2008.

Я собирался написать приложение для этого, но я подумал, что может быть умный способ сделать это в SQL, о котором я не думал.

Кто-нибудь знает способ достижения этого простым способом в SQL?

Предположим, у меня есть следующая таблица:

ТАБЛИЦА: [Данные]
КОЛОННА: ID INT
КОЛОННА: ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ
COLUMN: FileStreamFile VARBINARY (MAX) FILESTREAM DEFAULT (0x)

Очевидно, что ImageFile - это старый столбец, который я хочу перенести в FileStreamFile

Ответы [ 2 ]

0 голосов
/ 11 июня 2009

Обязательно включите функцию FILESTREAM .

Вы хотите создать таблицу, которая поддерживает файловые потоки, в соответствии с кодом ниже ( из MSDN ):

CREATE TABLE Archive.dbo.Records
(
    [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
    [SerialNumber] INTEGER UNIQUE,
    [Chart] VARBINARY(MAX) FILESTREAM NULL
)
GO

Похоже, что довольно прозрачно после этого - то есть добавление файловых потоков обрабатывается SQL Server без минимальных усилий с вашей стороны Например:

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO
0 голосов
/ 11 июня 2009

вы пытались преобразовать ваше изображение в varbinary (max) в обновлении?

UPDATE [Data]
SET    [FileStreamFile] = CAST([ImageFile] AS VARBINARY(MAX))

Исходя из этой страницы MSDN , похоже, что это должно работать.

...