У меня есть файл в этом формате.Как импортировать многострочный CSV в SAS
abc;def;"ghi
asdasd
asdasd
asd
asd
aas
d
"
Теперь я хочу импортировать его с помощью SAS. Как обрабатывать многострочные значения?
У меня есть файл в этом формате.Как импортировать многострочный CSV в SAS
abc;def;"ghi
asdasd
asdasd
asd
asd
aas
d
"
Теперь я хочу импортировать его с помощью SAS. Как обрабатывать многострочные значения?
Ответ может зависеть от того, что приводит к появлению линейных переводов, каков их тип перевода, а также, возможно, в ОС, на которой работает SAS, а также на версию SAS, которую вы используете. Не зная, какой-либо из ответов на эти вопросы, вот несколько предложений:
Во-первых, вы могли бы попробовать это входной_файл заявление на вашем шаге данных:
infile "C:\test.csv" dsd delimiter=';' termstr=crlf;
termstr=crlf
говорит SAS, чтобы использовать только символы перевода строки Windows, для запуска новых записей.
В качестве альтернативы, вы можете иметь SAS предобработать ваш файл побайтно, чтобы гарантировать, что любые символы перевода строки в пределах спаренных кавычки заменяются (возможно с пробелами):
data _null_;
infile 'C:\test.csv' recfm=n;
file 'C:\testFixed.csv' recfm=n;
input a $char1.;
retain open 0;
if a='"' then open=not open;
if (a='0A'x or a='0D'x) and open then put '00'x @;
else put a $char1. @;
run;
Это заимствовано из here для справки. Возможно, вам придется немного поработать с этим кодом, чтобы заставить его работать. Идея состоит в том, что вы затем прочитали полученный csv в SAS со стандартным шагом данных.
Это было сложно. Спасибо, sasfrog. –