2016-02-29 1 views
0

Я использую Microsoft SQL Server 2008 R2. У меня есть varbinary столбец RelatedData_img в таблице Reminderimage. В этом столбце хранятся файлы Word, Excel, изображения (png, bmp или jpg) или текстовые файлы и т. Д. Теперь я хочу сохранить данные из этого столбца на диск с помощью команды.Извлечь данные из Varbinary Column и сохранить его в исходном формате

Я пытался использовать эту BCP команду:

bcp "SELECT RelatedData_img FROM Reminderimage.dbo.Reminderimage" queryout "D:\testing6" -n -S PCname\SQLMANAGEMENT,25222 -Utest -Ptest 

Я получить файл, который содержит XML-файлы. Я пробовал -N и -c вместо -n. Но я получаю те же файлы xml.

Как получить файлы в исходном формате (word, excel, jpg и т. Д.). Я хочу сохранить все содержимое столбца на растяжке, потому что я не знаю, какая строка имеет файл формата.

Как я могу это достичь?

ответ

1
  • Create a format file Запрос по одной колонке (скажем, C:\Temp\xyz.fmt).
  • Отредактируйте файл формата, чтобы установить префикс в 0 байтов (например, с помощью Блокнота).
SET NOCOUNT ON; 
CREATE TABLE tt(the_file VARBINARY(MAX) NOT NULL); 
GO 
SET NOCOUNT ON; 
DECLARE @bcp_cmd VARCHAR(8000); 
SET @bcp_cmd='BCP '+QUOTENAME(DB_NAME())+'.dbo.tt format nul -T -N -f "C:\Temp\xyz.fmt" -S PCname\SQLMANAGEMENT,25222 -Utest -Ptest'; 
EXEC master.sys.xp_cmdshell @bcp_cmd; 
DROP TABLE tt; 
GO 
-- This creates C:\Temp\xyz.fmt file with prefix=8... Change the 8 to 0 in it. 

  • Используйте формат файла в вашей команды экспорта БКП. Вам нужно будет использовать курсор для записи записей, которые вы хотите экспортировать, и генерировать динамическую команду BCP для каждого файла, который вы хотите сгенерировать. Это пример, который выбирает первую строку из таблицы в вашем вопросе и экспортирует ее D:\testing6.
SET NOCOUNT ON; 
DECLARE @bcp_cmd VARCHAR(8000); 
SET @bcp_cmd='BCP "SELECT TOP 1 RelatedData_img FROM Reminderimage.dbo.Reminderimage" QUERYOUT "D:\testing6" -T -fC "C:\Temp\xyz.fmt" -S PCname\SQLMANAGEMENT,25222 -Utest -Ptest'; 
EXEC master..xp_cmdshell @bcp_cmd; 
GO 
+0

Я попробовал ваше предложение, он просто копирует файл D: \ с именем testing6. Как решить расширение этого файла? –

+0

@ITresearcher Если вы не сохранили формат файла в своей базе данных, вам придется самим проверять двоичные данные. В SQL Server нет функциональности, чтобы автоматически определить, в каком формате находится файл. –

+0

На указанном сайте я не нашел способ создания формата столбца. Объясняется процедура создания файла fmt для таблицы. Можете ли вы помочь мне создать файл fmt столбца «RelatedData_img» в моем случае. –

Смежные вопросы