我有XML格式的电子邮件数据,我正在尝试将其加载到多个SAS表中。 XML的结构不平坦,并且在层次结构中具有多个级别。从这个XML文件,我想创建几个SAS表(例如,发件人,收件人,附件,电子邮件正文和元数据......)。显然,对于一封电子邮件,将有一个发件人,一封电子邮件,但任意数量的收件人和附件。为此,我目前正在使用XML Map文件将数据转换为我需要的表。
我遇到的问题是,通过将xmlv2引擎与MAP文件一起使用,似乎SAS会为我想要创建的每个表读取一次XML文件。这会产生一个问题,因为它不能很好地扩展!例如,如果我有200GB的XML文件并且想要创建10个表,那么我将读取2TB数据来执行此操作。有没有更好的方法来处理XML文件,以便我只需要传递一次文件就可以将所有数据读入SAS数据集?
提前致谢。
答案 0 :(得分:0)
将目录分配为聚合文件位置,并使用数据步骤在单个数据步骤中依次访问文件。在sas的filevar上搜索有关如何执行此操作的示例。 xml映射文件将为您提供xmlpath详细信息,您需要在xml文件中找到可以使用数据步骤代码直接读取的内容。
早期帖子中建议的替代方案也可行。如上所述预处理datasp中的n * xml文件,但是编写一次所选的标题内容(开始标记),然后写入每个xml文件中的数据内容(丢弃每个后续文件的标题内容),然后写入结束标记一次。这个过程非常快。然后您的原始xml映射文件将处理一次大型xml文件。您可以通过手动编辑两个xml文件将其折叠为一个来快速测试此方法。这将很快告诉您一次所需的共同内容