使用 SAS 下载 Blob_file
Download Blob_file with SAS
我正在尝试从 ORACLE DB 下载 Blob 文件。我使用 dbms_lob.substr 来切割零件上的二进制数据(HEX 字段的最大长度为 2,000)。所以我将其剪切,然后将数据放入 .docx 文件中。当我打开它时,我看到消息:
Word found a problem with content in file test777.docx
并要求我修复文件。 Office 套件修复后,文档可以正常打开。我可以打开文档。
截图中我认为的核心问题:
[![在此处输入图片描述][1]][1]
最后一个字段的符号切割后剩余的数量是用'02'补充的。所以当我把它写在一个文件中并用二进制视图打开它时,我看到里面有很多空格。据我了解,这是一个核心问题。
[![在此处输入图片描述][2]][2]
- 有人知道如何避免吗?我觉得是下载方法的问题
- 如何像Office一样修复一堆文件? (我每个月有将近100个文件)。
您没有为 blob 的长度指定变量名称,所以我将使用 BLOB_LENGTH。您需要确保不要写出超过全长。此外,您不希望在 FILE 语句中使用 MOD 选项,因为您正在创建不附加到现有文件的文件。
data _null_;
length fv $ 120;
set blobs;
fv="k:\Folder\"||File_nm;
file writeout FILEVAR=fv recfm=n;
array blob[8] blob_1-blob_8;
do i=1 to 8 ;
len = max(0,min(2000,blob_length - 2000*(i-1)));
put blob[i] $varying2000. len;
end;
run;
我正在尝试从 ORACLE DB 下载 Blob 文件。我使用 dbms_lob.substr 来切割零件上的二进制数据(HEX 字段的最大长度为 2,000)。所以我将其剪切,然后将数据放入 .docx 文件中。当我打开它时,我看到消息:
Word found a problem with content in file test777.docx
并要求我修复文件。 Office 套件修复后,文档可以正常打开。我可以打开文档。
截图中我认为的核心问题: [![在此处输入图片描述][1]][1]
最后一个字段的符号切割后剩余的数量是用'02'补充的。所以当我把它写在一个文件中并用二进制视图打开它时,我看到里面有很多空格。据我了解,这是一个核心问题。
[![在此处输入图片描述][2]][2]
- 有人知道如何避免吗?我觉得是下载方法的问题
- 如何像Office一样修复一堆文件? (我每个月有将近100个文件)。
您没有为 blob 的长度指定变量名称,所以我将使用 BLOB_LENGTH。您需要确保不要写出超过全长。此外,您不希望在 FILE 语句中使用 MOD 选项,因为您正在创建不附加到现有文件的文件。
data _null_;
length fv $ 120;
set blobs;
fv="k:\Folder\"||File_nm;
file writeout FILEVAR=fv recfm=n;
array blob[8] blob_1-blob_8;
do i=1 to 8 ;
len = max(0,min(2000,blob_length - 2000*(i-1)));
put blob[i] $varying2000. len;
end;
run;