#xml #sas #proc #datastep
#xml #sas #процедура #datastep
Вопрос:
У меня есть файл XML-данных размером 5 ГБ, и мне нужно, чтобы он был импортирован в SAS. Я пытаюсь использовать libname, и он все еще работает и работает
libname in xml 'C:TestDatafile.xml';
data want;
set in.want;
run;
Есть ли лучший способ импортировать этот файл?
Спасибо
Комментарии:
1. Вы знаете, что находится в файле? Как создается XML? Как вы хотите сопоставить его с набором данных SAS или с наборами данных? Я бы попробовал движок XMLV2 вместо старого движка XML. Знаете ли вы, как создать файл карты, который используют движки XML? Это может помочь сделать это первым, вместо того, чтобы просить SAS попытаться выяснить это, просмотрев файл.
2. Спасибо, Том — это должны быть данные на уровне столбца. Я попытался использовать SAS XML mapper, и он разбился из-за размера файла. Я даже попробовал XMLV2 в своем заявлении libname, и у меня была ошибка несовместимости
3. Вам не обязательно использовать XML mapper для создания файла карты. Это просто текстовый файл. Вы можете создать его самостоятельно с помощью любого текстового редактора, если понимаете синтаксис. Возможно, вам повезет больше с использованием внешних инструментов синтаксического анализа XML для преобразования файла в один или несколько простых прямоугольных файлов, например CSV-файлов.
4. Какова структура XML? Пожалуйста, опубликуйте образец с достаточным количеством повторяющихся узлов, чтобы понять структуру в основном тексте вопроса (не в виде изображения).
Ответ №1:
Метод 1 — Это то, что вы делаете.
libname myxml xml 'U:XMLsubjects.xml';
libname dat 'U:data';
data dat.subjects;
set myxml.subjects;
run;
proc print data = dat.subjects noobs;
run;
Метод — 2 с использованием Proc copy
libname myxml xml 'U:XMLsubjects.xml';
libname dat 'U:data';
proc copy in=myxml out=dat;
run;
Способ 3 — Использование xmlmap
filename path 'U:XMLpath.xml';
filename map 'U:XMLpath.map';
libname path xml xmlmap=map;
proc print data=path.ford noobs;
run;
Метод — 4 с использованием Excel
PROC IMPORT OUT=subjects DATAFILE="U:subjects.xls" DBMS=xls;
GETNAMES=yes;
RUN;
Все подробности доступны в этом фантастическом документе глобального форума.