将 XML 文件上传到 SAS

Uploading an XML file to SAS

我正在尝试将 XML 中的 stackexchange 数据转储上传到 SAS。 它采用这种特殊格式。

     <?xml version="1.0" encoding="UTF-8"?>
        -<votes>
        <row CreationDate="2013-10-22T00:00:00.000" VoteTypeId="2" PostId="4" Id="1"/>
        <row CreationDate="2013-10-22T00:00:00.000" VoteTypeId="16" PostId="1" Id="2"/> 
        <row CreationDate="2013-10-22T00:00:00.000" VoteTypeId="2" PostId="1" Id="3"/>
        </votes>

我尝试在 SAS 中使用默认的 XML 解析脚本,例如 xml 和 xml92,但导入失败。

libname Stackof xml 'C:\Users\abc\Documents\My SAS Files\Stackof\Votes.xml';   
libname Stack 'C:\Users\abc\Documents\My SAS Files\Stack';  
data stack.votes;    
set stackof.votes;         
run;

我能够在 Excel 中打开较小的文件,将它们转换成 CSV 然后上传,但是对于大文件(大约 29 GB 的帖子和来自堆栈溢出的投票数据)最好的方法是什么去做吧。

要导入这样的 XML 文件,您应该首先创建一个 XML 地图。请参阅该主题的 SAS Documentation。您可以手动创建地图(我以前做过多次),也可以使用与 SAS 捆绑在一起或可单独下载的 XML 地图实用程序。确保为您的 SAS 版本制作正确的地图版本,因为更高版本的 SAS 支持更复杂的地图。

地图基本上告诉 SAS 什么定义了数据集,什么是行,什么是列,以及每列是什么数据类型。这让 SAS 知道什么东西去了哪里,否则它不知道把东西放在哪里。