我想将 .sas7bdat 文件转换为 .csv/txt 格式,以便我可以将其上传到 Hive 表中。 我从外部服务器接收 .sas7bdat 文件,但我的计算机上没有 SAS。
使用 R 外部包之一读取文件,然后使用该工具转换为 CSV。
http://cran.r-project.org/doc/manuals/R-data.pdf 第 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
Python 包
sas7bdat
(可在此处获取)包含一个用于读取 sas7bdat 文件的库:
from sas7bdat import SAS7BDAT
with SAS7BDAT('foo.sas7bdat') as f:
for row in f:
print row
和一个命令行程序无需编程
$ sas7bdat_to_csv in.sas7bdat out.csv
我最近编写了这个包,允许您使用 Hadoop/Spark 将 sas7bdat 转换为 csv。它能够分割巨大的sas7bdat文件,从而实现高并行性。解析还使用@Ashpreet建议的parso
如果这是一次性的,您可以从这里免费下载SAS系统查看器(注册帐户后,也是免费的):
http://support.sas.com/downloads/package.htm?pid=176
然后您可以使用查看器打开 sas 数据集并将其另存为 csv 文件。据我所知,没有 CLI,但如果您真的愿意,您可能可以编写一个自动热键脚本或类似的脚本来将 SAS 数据集转换为 csv。
也可以使用 OLE DB 的 SAS 提供程序来读取 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
感谢您的帮助。我结束了我们在 java 中使用 parso 实用程序的工作,它的工作非常顺利。该实用程序将行作为对象数组返回,我将其写入文本文件。
我从以下位置引用了该实用程序:http://lifescience.opensource.epam.com/parso.html