使用 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]

  1. 有人知道如何避免吗?我觉得是下载方法的问题
  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;