2014-10-23 4 views
6

Я хочу преобразовать файл .sas7bdat в формат .csv/txt, чтобы я мог загрузить его в таблицу улей. Я получаю файл .sas7bdat с внешнего сервера и не имею SAS на своей машине.Как преобразовать файл sas7bdat в csv?

Заранее спасибо.

+0

Что вы сделали до сих пор? – matsjoyce

+0

Очень сложно получить данные из файла sas7bdat без установки SAS на вашем компьютере. Можете ли вы получить данные в другом формате или перенести их на компьютер или сервер, на котором установлен SAS? – mjsqu

+0

Это невозможно без какого-либо инструмента. SAS7BDAT является закрытым форматом, и лишь немногие люди имеют обратную инженерию. – Joe

ответ

7

Используйте один из R-пакетов, чтобы прочитать файл, а затем конвертировать в CSV с помощью этого инструмента.

http://cran.r-project.org/doc/manuals/R-data.pdf Pg 12

Использование пакета SAS7BDAT вместо этого. Похоже, что он игнорирует пользовательский формат, считывая основные данные.

В SAS:

proc format; 
value agegrp 
    low - 12 = 'Pre Teen' 
    13 -15 = 'Teen' 
    16 - high = 'Driver'; 
run; 

libname test 'Z:\Consulting\SAS Programs'; 

data test.class; 
set sashelp.class; 
age2=age; 
format age2 agegrp.; 
run; 

В R:

install.packages(sas7bdat) 
library(sas7bdat) 
x<-read.sas7bdat("class.sas7bdat", debug=TRUE) 
x 
+0

Что происходит с форматированными в переменном состоянии переменными в импортированном наборе данных SAS при использовании этого подхода? Означает ли R только базовые ценности? – user667489

+0

Да, изменил ответ выше, чтобы продемонстрировать это. – Reeza

+2

https://github.com/hadley/haven теперь намного более быстрая альтернатива пакету sas7bdat – Saurfang

2

Если это разовый, вы можете загрузить программу просмотра системы SAS бесплатно здесь (после регистрации аккаунта, который также бесплатно):

http://support.sas.com/downloads/package.htm?pid=176

Вы можете открыть ГАС набора данных U петь зрителя и сохранять его как файл csv. Насколько я могу судить, нет CLI, но если вы действительно хотели, возможно, вы могли бы написать сценарий authotkey или аналогичный для преобразования наборов данных SAS в csv.

Также можно использовать поставщик SAS для OLE DB для чтения наборов данных SAS фактически не имея установленный SAS, и которая доступна здесь:

http://support.sas.com/downloads/browse.htm?fil=0&cat=64

Однако это довольно сложная - некоторая документация доступны здесь, если вы хотите, чтобы получить представление о том:

http://support.sas.com/documentation/cdl/en/oledbpr/59558/PDF/default/oledbpr.pdf

+0

Вот описание того, как просматривать данные с помощью powershell, поэтому я бы подумал, что можно использовать тот же подход для экспорта в CSV : http://blogs.sas.com/content/sasdummy/2012/04/12/build-your-own-sas-data-set-viewer-using-powershell/ –

+0

Спасибо, это помогло мне проверить данные, так как Я не мог первоначально просмотреть файл sas –

1

Спасибо за вашу помощь. Я закончил с использованием утилиты parso в java, и это сработало как шарм. Утилита возвращает строки как массивы объектов, которые я написал в текстовый файл.

я упомянул утилиту от: http://lifescience.opensource.epam.com/parso.html

Благодарности

+0

Лучшая ссылка на Parso: http://scitouch.net/opensource/parso –

2

Я недавно написал этот пакет, который позволяет конвертировать sas7bdat в CSV-файл с помощью Hadoop/Спарк. Он способен разбивать гигантский файл sas7bdat, тем самым обеспечивая высокий параллелизм. Разбор также использует parso как предложено @Ashpreet

https://github.com/saurfang/spark-sas7bdat

0

питона пакет sas7bdat, доступного here, включает в себя библиотеку для чтения файлов sas7bdat:

from sas7bdat import SAS7BDAT 
with SAS7BDAT('foo.sas7bdat') as f: 
    for row in f: 
     print row 

и программу командной строки не требующие программирования

$ sas7bdat_to_csv in.sas7bdat out.csv 
Смежные вопросы