2015-09-14 46 views
0

我从Oracle(doc文件)中获取了二进制数据,并将其分为几部分(导致长度限制)。 然后我需要把这个二进制数据文件(创建文件) 接下来我要做的:将二进制数据从SAS写入文件

data _null_; 
    set data; 
    file 'c:\fileout.doc' lrecl=4000; 
    put @1 blob_1 $HEX4000 
     @2 blob_2 $HEX4000  
     @3 blob_3 $HEX4000  
    [etc] 
    ; 
run; 

当我打开它,我看到的二进制代码。如何将二进制数据放入文件并以正确的方式查看我的文档?

谢谢。

+0

我认为这是关系到[这个问题](http://stackoverflow.com/questions/32542486/import-blob-through-sas-from-oracle-db) - 你有没有得到解决那里?我认为这真的重复了这个问题 - 如果你解决了这个问题,这个问题也解决了。 – Joe

+0

它是一种不同的问题。这个问题是关于将数据保存到文件,还没有从Oracle数据库获取数据 – bobby1232

+0

但在我看来,这是同一个根本问题:您不知道如何以可读格式从blob中获取数据。 – Joe

回答

1

您需要在FILE语句中使用正确的RECFM。在PUT语句中也使用适当的格式。

data _null_; 
    set data; 
    file 'c:\fileout.doc' RECFM=N ; 
    array blob blob_1-blob_3 ; 
    do i=1 to dim(blob); 
     put blob(i) $char2000. ; 
    end; 
run; 
+0

非常感谢!你能告诉我如何编写这一步如果我有行数?(需要创建n个不同文件的数字,并且文件名必须是变量的开始 – bobby1232

+0

使用FILE语句的FILEVAR选项来告诉它数据集中的哪个变量具有要写入的文件的名称您可能必须具有一个变量,以指示要为每个观察记录多少个字符(字节) – Tom

+0

我拥有它,它是dbms_lob.getlength – bobby1232