Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить файл(JPG) из поля Image / 15 сообщений из 15, страница 1 из 1
03.07.2017, 12:38
    #39481664
abrashka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
День добрый!
Получили старую базу, в которой есть таблица Customer с полем Picture image null.
Хотелось бы верить, что там действительно хранится фото клиента.

Пытаюсь экспортировать image в JPG, но полученный файл не открывается в графическом редакторе :(
Что я делаю не так и как нужно его открывать?
В качестве примера, я запускаю этот скрипт для получения фото клиента с id=114230
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
declare @KeyField int
declare @FileName nvarchar(1000)
declare @bcpCommand nvarchar(4000)
 
DECLARE c1 CURSOR FOR 
SELECT CustomerId
FROM dbo.Customer
WHERE CustomerId=114230
OPEN c1

FETCH NEXT FROM c1
INTO @KeyField

WHILE @@FETCH_STATUS = 0
BEGIN

-- Create unique name for the file using KeyField from the table
SELECT @FileName = 'C:\ttt\' + convert(varchar(18), @KeyField) + '.jpg'

SET @bcpCommand = 'bcp "SELECT Picture FROM [dbo].[Customer] WHERE CustomerId = ' + convert(varchar(18), @KeyField) + '" queryout "'
SET @bcpCommand = @bcpCommand + @FileName + '" -S MyServer\SQL2014 -T -n'


PRINT @bcpCommand
EXEC master..xp_cmdshell @bcpCommand, no_output

FETCH NEXT FROM c1
INTO @KeyField

END

CLOSE c1
DEALLOCATE c1 
...
Рейтинг: 0 / 0
03.07.2017, 12:48
    #39481677
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
abrashka,

попробуйте использовать этот код для заведомо исправной картинки. Потом ищите проблему, если останется.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.12.2019, 10:02
    #39908844
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Владислав Колосов,
Добрый день. Использовал выше указанный скрипт. При открытие полученного файла выдаёт:
Средству просмотра Windows не удаётся открыть это изображение, так как файл повреждён или слишком велик.
Размер исходного и полученного файла совпадает. 46,8 Кб
...
Рейтинг: 0 / 0
27.12.2019, 10:18
    #39908851
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
_Gavrysh_,

Побайтово сравните, предположу, что у вас появились какие-то добавки в начале или конце файла
...
Рейтинг: 0 / 0
27.12.2019, 10:26
    #39908853
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Да, действительно до 48 010, после 48 014. И откуда это берётся и как этим "бороться"?
...
Рейтинг: 0 / 0
27.12.2019, 10:31
    #39908857
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
_Gavrysh_
Да, действительно до 48 010, после 48 014. И откуда это берётся и как этим "бороться"?
1) И чем они отличаются?
2) Скрипт не меняли?
...
Рейтинг: 0 / 0
27.12.2019, 10:32
    #39908861
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
_Gavrysh_
Да, действительно до 48 010, после 48 014. И откуда это берётся и как этим "бороться"?
BCP в начало файла пишет 4 байта размера файла.
...
Рейтинг: 0 / 0
27.12.2019, 10:46
    #39908873
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
alexeyvg
_Gavrysh_
Да, действительно до 48 010, после 48 014. И откуда это берётся и как этим "бороться"?
1) И чем они отличаются?
2) Скрипт не меняли?

datalength(Поля исходного файла(image)) тоже равно 48010

Скрипт менял только под свои таблицы. А на первый вопрос не знаю как ответить.
...
Рейтинг: 0 / 0
27.12.2019, 10:50
    #39908875
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Sergey Sizov
_Gavrysh_
Да, действительно до 48 010, после 48 014. И откуда это берётся и как этим "бороться"?
BCP в начало файла пишет 4 байта размера файла.

А есть средство избежать это? Читаю документацию про bpc пока про это ни чего не нашёл.
...
Рейтинг: 0 / 0
27.12.2019, 11:02
    #39908880
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
_Gavrysh_

А есть средство избежать это?

задать format file с одной SQLBINARY-колонкой.
...
Рейтинг: 0 / 0
27.12.2019, 11:10
    #39908886
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Если версия MSSQLSERVER - позволяет (2012+), создайте таблицу filetable с нетранзакционным доступом, и сохраняйте свои картинки туда сразу, минуя возню с bcp.
...
Рейтинг: 0 / 0
27.12.2019, 11:35
    #39908895
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Yasha123
_Gavrysh_

А есть средство избежать это?

задать format file с одной SQLBINARY-колонкой.

Всего и делов то ) Не подскажите как?
...
Рейтинг: 0 / 0
27.12.2019, 11:40
    #39908899
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
_Gavrysh_,

создаете файл с расширением .fmt.

Код: plaintext
1.
2.
3.
9.0 
1 
1       SQLBINARY           0       0       ""   1     Data                                   "" 

в команде bcp дописываете атрибут "-f <путь к fmt-файлу>"
...
Рейтинг: 0 / 0
27.12.2019, 12:07
    #39908916
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
Minamoto,
Yes! Получилось спасибо. И остальным спасибо тоже.
...
Рейтинг: 0 / 0
27.12.2019, 13:24
    #39908969
_Gavrysh_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить файл(JPG) из поля Image
и да, параметр -n не нужен
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить файл(JPG) из поля Image / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]