将XML读入多个SAS表

将XML读入多个SAS表,xml,sas,Xml,Sas,我有XML格式的电子邮件数据,我正在尝试将其加载到多个SAS表中。XML的结构不是扁平的,在层次结构中有多个层次。从这个XML文件中,我想创建几个SAS表(例如,发件人、收件人、附件、电子邮件正文和元数据…)。显然,对于一封电子邮件,将有一个发件人、一封电子邮件,但收件人和附件的数量不限。为此,我目前正在使用一个XML映射文件将数据转换为我需要的表 我的问题是,通过将xmlv2引擎与映射文件一起使用,SAS似乎会为我要创建的每个表读取一次XML文件。这造成了一个问题,因为它不能很好地扩展!例如,

我有XML格式的电子邮件数据,我正在尝试将其加载到多个SAS表中。XML的结构不是扁平的,在层次结构中有多个层次。从这个XML文件中,我想创建几个SAS表(例如,发件人、收件人、附件、电子邮件正文和元数据…)。显然,对于一封电子邮件,将有一个发件人、一封电子邮件,但收件人和附件的数量不限。为此,我目前正在使用一个XML映射文件将数据转换为我需要的表

我的问题是,通过将xmlv2引擎与映射文件一起使用,SAS似乎会为我要创建的每个表读取一次XML文件。这造成了一个问题,因为它不能很好地扩展!例如,如果我有200GB的XML文件,并且想要创建10个表,那么我将读取2TB的数据来执行此操作。有没有更好的方法来处理XML文件,这样我只需通过一次文件就可以将所有数据读取到SAS数据集中


提前感谢。

将目录分配为聚合文件位置,并使用数据步骤在单个数据步骤中依次访问文件。有关如何执行此操作的示例,请在sas帮助中搜索filevar。xml映射文件将为您提供查找xml文件中的内容所需的xmlpath详细信息,您可以使用数据步骤代码直接读取这些内容


在之前的帖子中建议的替代方案也会起作用。如上所述,在数据步骤中预处理n*xml文件,但先写入选定的标题内容(开始标记),然后写入每个xml文件中的数据内容(丢弃每个后续文件的标题内容),然后写入结束标记一次。这个过程非常快。然后,您的原始xml映射文件将对大型xml文件进行一次处理。您可以通过手动编辑两个xml文件以将它们折叠为一个文件来快速测试这种方法。这将很快告诉您需要哪些共同内容

如何将xmlv2引擎与映射文件一起使用?IE,所以您得到了一个
libname xmlv2 myxmlf“blah.xml”,现在如何创建十个文件?是否有一种方法可以预处理XML文件,将所有XML文件组合成一个巨大的XML文件。这样,每个表只读取一次文件。仍然不理想,但可能可行?我曾经导入4GB XML,这需要很长时间。在导入SAS之前,您可以考虑预处理数据。