Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 680
Добрый день.

пытаюсь сохранить в файл:

DECLARE @bcpCommand NVARCHAR(1024)
SET @bcpCommand = 'bcp "SELECT [Miniature] FROM [cs].[dbo].[Gallery] WHERE [Key] = 1" queryout "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\8888.jpg" -T -c'
EXEC master..xp_cmdshell @bcpCommand


что-то сохраняется, но открыть невозможно.

Если сравнить по размерам
SELECT LEN([Miniature]) FROM [Gallery] WHERE [Key] = 1


то в бд храниться файл размером 10903 байта, а сохраняет на 20808 байт.
Что делаю не так?
7 окт 16, 11:11    [19754196]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
aleks2
Guest
Начните с малого...

DECLARE @bcpCommand NVARCHAR(1024)
SET @bcpCommand = 'bcp "SELECT substring([Miniature], 1, 10) FROM [cs].[dbo].[Gallery] WHERE [Key] = 1" queryout "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\8888.jpg" -T -c'
EXEC master..xp_cmdshell @bcpCommand

-- узри и ужаснись
SELECT substring([Miniature], 1, 10) FROM [cs].[dbo].[Gallery] WHERE [Key] = 1
select * from openquery(BULK 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\8888.jpg', SINGLE_BLOB)
7 окт 16, 11:31    [19754311]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Игорь_UUS
Что делаю не так?
Не читаете документацию, а тычете пальцем в небо. Прочитайте, что означает опция "-c".
7 окт 16, 11:35    [19754340]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 680
aleks2

только конечно нужно через "OpenRowset"

а, так, да ужаснулся! В чём подвох? И как получить правильный набор данных (если это важно, использую MSSQL2012R2)
7 окт 16, 11:39    [19754367]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 680
invm
Игорь_UUS
Что делаю не так?
Не читаете документацию, а тычете пальцем в небо. Прочитайте, что означает опция "-c".


Голову сломал. Читаю документацию, походу моих знаний не хватает... не могу разобраться, помогите
7 окт 16, 12:07    [19754542]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
aleks2
Guest
>bcp /?
Использование: C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.EXE {dbtable | query} {in | out | queryout | format} файл_данных
[-m макс.число_ошибок] [-f формат_файла] [-e файл_ошибок]
[-F первая_строка] [-L последняя_строка] [размер_пакета]
[-n собственный_тип] [-c символьный_тип] [-w широкосимвольный_тип]
[-N сохр.нетекстовый формат] [-V версия_формата] [-q идентификатор_в_кавычках]
[-C ИД_кодовой_страницы] [-t признак_конца_поля] [-r признак_конца_строки]
[-i входной_файл] [-o выходной_файл] [-a размер_пакета]
[-S имя_сервера] [-U имя_пользователя] [-P пароль]
[-T доверенное_соединение] [-v версия] [-R вкл.региональные стандарты]
[-k сохранять значения NULL] [-E сохранить значения идентификаторов]
[-h "подсказки загрузки"] [-x создать XML-файл форматирования]
[-d имя базы данных] [-K намерение приложения]
7 окт 16, 12:11    [19754576]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
http://www.codeproject.com/Tips/372613/SQL-Server-BLOB-Import-and-Export
7 окт 16, 12:11    [19754578]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 680
aleks2
>bcp /?
Использование: C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.EXE {dbtable | query} {in | out | queryout | format} файл_данных
[-m макс.число_ошибок] [-f формат_файла] [-e файл_ошибок]
[-F первая_строка] [-L последняя_строка] [размер_пакета]
[-n собственный_тип] [-c символьный_тип] [-w широкосимвольный_тип]
[-N сохр.нетекстовый формат] [-V версия_формата] [-q идентификатор_в_кавычках]
[-C ИД_кодовой_страницы] [-t признак_конца_поля] [-r признак_конца_строки]
[-i входной_файл] [-o выходной_файл] [-a размер_пакета]
[-S имя_сервера] [-U имя_пользователя] [-P пароль]
[-T доверенное_соединение] [-v версия] [-R вкл.региональные стандарты]
[-k сохранять значения NULL] [-E сохранить значения идентификаторов]
[-h "подсказки загрузки"] [-x создать XML-файл форматирования]
[-d имя базы данных] [-K намерение приложения]



используя [-n собственный_тип] ничего не даёт, размер больше чуть больше, чем должен быть. После такой выгрузки размер 10911, а должен быть 10903... и как следствие не открывается((
7 окт 16, 12:56    [19754942]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Игорь_UUS
После такой выгрузки размер 10911, а должен быть 10903... и как следствие не открывается((
Ну да. Зачем читать предложенную статью? Там же всякую ересь пишут, да еще на тарабарском языке...
7 окт 16, 13:39    [19755281]     Ответить | Цитировать Сообщить модератору
 Re: Как сохранить картинку, которая храниться в VARBINARY(MAX), на жёсткий диск  [new]
KRS544
Member

Откуда:
Сообщений: 497
FileTable не поможет?
7 окт 16, 14:26    [19755614]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить