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

Откуда:
Сообщений: 2696
Доброго дня господа !

Необходимо сохранить JPG в базу и выгрузить его на диск

Делаю так

create table master.dbo.Example (Id Int,Img Image)

insert into master.dbo.Example(Id,Img)
select 1 Id,(select *
from OpenRowSet(Bulk 'C:\MAIL\In.jpg',Single_Blob) Img
)

Выгружаю из операционки утилитой bcp

bcp "select Img from master.dbo.Example" queryout out.jpg -SMyPK\INFOBANK -T -c -CRAW >error.txt

Имею выгрузочный файл не формата JPG и не сопоставим по размеру

Где допускаю глупость, поясните пожалуйста
6 авг 12, 11:53    [12967000]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
вроде как bcp обрезает даные больше 8000 байт, если не использовать файл формата
попробуйте прикрутить файл формата вида

9.0
 
1
 
1       SQLVARYBIN     8       0       ""   1     BinaryData                   ""


или же, сначала попробуйте поиграться с кодировками, т.е вместо
-c -CRAW указать -n
6 авг 12, 12:04    [12967086]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HOME_X
Member

Откуда:
Сообщений: 2696
HandKot,

Помогло - спасибо !

Размер файла малость изменился, но формат читабельный
6 авг 12, 12:09    [12967135]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
HOME_X
Имею выгрузочный файл не формата JPG и не сопоставим по размеру

Первые 4 байта в выходном файле задают длину данных.
6 авг 12, 12:25    [12967259]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HOME_X
Member

Откуда:
Сообщений: 2696
Glory,


А их возможно как-то избежать ?
Из за них не все файлы нормально открываються ?
6 авг 12, 12:52    [12967479]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
HOME_X
А их возможно как-то избежать ?

Ну так формат файл

HOME_X
Из за них не все файлы нормально открываються ?

Файлы, создаваемые bcp, делаются для удобства работы bcp.
Для удобства работы других программ существют ключи запуска и файл формата.
6 авг 12, 12:56    [12967515]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HOME_X
Member

Откуда:
Сообщений: 2696
Glory,

Принято - работает !
Длину префикса поля можно обнулить ..........

Спасибо .

Еще момент - а нет ли инструментов и механизмов для выгрузки
данных без внешней проги.

Очень бы хотелось сделать это через процедуру.
Имею пример с использованием exec xp_cmdshell + bcp
Но это не очень удачно, много этапов....

Подскажите пожалуйста
6 авг 12, 13:54    [12967936]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
CLR
6 авг 12, 14:21    [12968193]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HOME_X
Member

Откуда:
Сообщений: 2696
HandKot,

Извините не точно выразился...

Имел в виду системных решения базы созданные не пользователем а Microsoftom
6 авг 12, 14:38    [12968351]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
я таких не знаю.
возможно есть недокумнетированные, но не факт
6 авг 12, 15:55    [12969077]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Сохранение и выгрузка JPG в базе  [new]
Valerii79
Member

Откуда: Кишинев, Молдавия
Сообщений: 395
Подскажите, пожалуйста, как правильно выгрузить рисунок из БД на диск. После выгрузки рисунок не отображается при открытии.

Выполняемый скрипт:
declare @bcpCommand varchar(8000)

set @bcpCommand = 'bcp "select PhotoUser from automall.dbo.sUser where UserName = ''chernenkova''" queryout "\\B119\Import\Congratulation\Birthday\chernenkova.jpeg" -S testserver -T -c -f "\\B119\Import\Congratulation\Birthday\PhotoUser.fmt"'

EXEC master..xp_cmdshell @bcpCommand


Файл форматирования:
10.0
1
1       SQLVARYBIN     8       0       ""   1     PhotoUser                   ""
31 июл 14, 11:11    [16380649]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
Valerii79
Member

Откуда: Кишинев, Молдавия
Сообщений: 395
Разобрался в чем дело!
31 июл 14, 11:48    [16380926]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Valerii79, поделитесь. Вдруг кому то еще поможет.
31 июл 14, 16:09    [16382727]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
FileCatalog не хотите использовать
31 июл 14, 17:20    [16383158]     Ответить | Цитировать Сообщить модератору
 Re: Сохранение и выгрузка JPG в базе  [new]
Valerii79
Member

Откуда: Кишинев, Молдавия
Сообщений: 395
BOL надо смотреть, там всё написано )

SQL2008
Valerii79, поделитесь. Вдруг кому то еще поможет.


Скрипт:
declare @bcpCommand varchar(2000), @FormatFilePath varchar(100)
set @FormatFilePath = '\\B119\Import\Congratulation\Birthday\Format.fmt'
set @bcpCommand = 'bcp "select PhotoUser from Automall.dbo.sUser where UserId = ' + CAST(@UserId as varchar(10)) + '" queryout "' + @UsersPhotoesPath + 'UserPhoto_' + CAST(@UserId as varchar(10)) + '.jpg' + '" -S ' + @ServerName + ' -T -f "' + @FormatFilePath + '"'
exec master..xp_cmdshell @bcpCommand


Файл форматирования:
10.0
1
1       SQLBINARY     0       0       ""   1     PhotoUser                   ""
1 авг 14, 18:00    [16389085]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить