Я работаю над интерфейсом SAS для экспорта изображений, хранящихся в SQL Server, в виде полей больших двоичных объектов через SAS. Моя проблема состоит в том, чтобы заставить SAS не «возиться» с данными между чтением их из БД и записью в файл.
До сих пор я был в состоянии получить изображение и записать его в файл с размером файла приблизительно правильный (т.е. в пределах 100 байт), следовательно, когда я пытаюсь отобразить полученный файл изображения, это повредиться.
Если я сравниваю рабочую картинку с созданной, похоже, что в некоторых строках вставлена новая строка, которая вызвала повреждение. В качестве теста, если я попытаюсь вручную исправить эти глюки линий, то смогу отобразить изображение на экране, но оно будет визуально повреждено.
Я думаю, что проблема заключается в форматах, которые я использую для сохранения изображения, или в операторе put при создании рабочей таблицы. Я надеюсь, что какой-нибудь гуру формата SAS поможет мне здесь ...
LIBNAME sphoto ODBC <...omitted> DBMAX_TEXT=32767;
proc sql noprint;
create table work.PHOTOS as
SELECT
photo as ImageData format=$32767. informat=$32767.
FROM
sphoto.Photos
WHERE ...
;
quit;
data _null_;
set work.PHOTOS;
file "image_sas.jpg";
put ImageData;
run;
UPDATE
См. Комментарий ниже, изменил оператор файла на этот, и теперь он работает.
file "/home/221741D/cardax/image_sas.jpg" LRECL=32767 NOPRINT NOTAB;